【问题标题】:ServiceStack - Redis Sessions AccumulatingServiceStack - Redis 会话累积
【发布时间】:2015-02-01 11:43:32
【问题描述】:

在 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 配置中的某些内容或可能设置错误?此外,如果我第二次登录,它们开始为同一用户累积。如果当前用户存在会话,我们是否应该在此方法中进行清理?

【问题讨论】:

    标签: redis servicestack


    【解决方案1】:

    这只会保存该时间的会话,如果再次保存会话,如果默认到期,它将被覆盖。

    您可以通过覆盖AppHostBase.OnSaveSession()来控制每次保存会话的时间,例如:

    public override void OnSaveSession(
        IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
    {
        base.OnSaveSession(session, TimeSpan.FromSeconds(30));
    }
    

    【讨论】:

    • 我不确定如何根据 request.RememberMe(永久与临时)来驱动到期?有没有简单的方法可以做到这一点?谢谢-
    • 它存储在ss-opt=perm Cookie中,您可以通过:httpReq.GetSessionOptions().Contains(SessionOptions.Permanent)获取它
    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 2014-06-06
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多