ServiceStack - Redis 会话累积
ServiceStack - Redis Sessions Accumulating
在AppHost.cs
container.Register<IRedisClientsManager>(
c => new PooledRedisClientManager(redisConnectionString));
我没有看到这些会话在 30 秒内得到清理。
public class MyUserSession: AuthUserSession {
public override void OnAuthenticated(IServiceBase authService,
IAuthSession session, IAuthTokens tokens,
Dictionary <string, string > authInfo) {
...do stuff here
authService.SaveSession(session, TimeSpan.FromSeconds(30));
}
}
我是不是在 redis 配置中遗漏了什么或者可能设置错了?此外,如果我第二次登录,它们会开始为同一用户累积。如果当前用户有一个现有会话,我们是否应该使用此方法进行清理?
那只会保存那个时间的会话,如果再次保存会话,如果默认到期,它将被覆盖。
您可以通过覆盖 AppHostBase.OnSaveSession()
来控制每次保存 Session 的时间,例如:
public override void OnSaveSession(
IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
base.OnSaveSession(session, TimeSpan.FromSeconds(30));
}
在AppHost.cs
container.Register<IRedisClientsManager>(
c => new PooledRedisClientManager(redisConnectionString));
我没有看到这些会话在 30 秒内得到清理。
public class MyUserSession: AuthUserSession {
public override void OnAuthenticated(IServiceBase authService,
IAuthSession session, IAuthTokens tokens,
Dictionary <string, string > authInfo) {
...do stuff here
authService.SaveSession(session, TimeSpan.FromSeconds(30));
}
}
我是不是在 redis 配置中遗漏了什么或者可能设置错了?此外,如果我第二次登录,它们会开始为同一用户累积。如果当前用户有一个现有会话,我们是否应该使用此方法进行清理?
那只会保存那个时间的会话,如果再次保存会话,如果默认到期,它将被覆盖。
您可以通过覆盖 AppHostBase.OnSaveSession()
来控制每次保存 Session 的时间,例如:
public override void OnSaveSession(
IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
base.OnSaveSession(session, TimeSpan.FromSeconds(30));
}