如何推进ServiceStack会话超时(How to advance the session ti

2019-07-19 20:02发布

在ServiceStack认证,仓库和缓存提供商提供了一种简单的方式来登录会话添加到Web应用程序,几乎没有额外的代码。 我发现了一个身份验证提供会话超时可配置,例如:

new CredentialsAuthProvider { SessionExpiry = TimeSpan.FromMinutes(10) }

这提供了从登陆点到期。 如果我们正在开发必须注销用户在短时间后安全系统的话,就要2周的默认更改为类似上面的例子。 但是,这有一个从用户登录10分钟将不管他们是否仍与应用程序交互踢出问题。

有一个简单的方法来告诉会话提供延长到期时间服务被称为是什么时候?

理想的情况下,将允许我们扩展了会议具体服务/请求(这样,当用户主动与应用程序交互,因此调查服务可以忽略会话只延长)。

更新

基于由mythz给出的答案,我们现在有一个简单的解决方案,它提供了我们需要通过控制水平延伸ResponseFilterAttribute 。

Answer 1:

ServiceStack不支持“滑动会话过期”自动呢。 你基本上需要重置每个成功的请求会话高速缓存条目。 即你可以有一个响应滤波器(因为他们是唯一的身份验证请求执行),其重新保存,将有扩大的影响它的寿命时间由到期时间的会议:

var userSession = httpReq.GetSession();
httpReq.SaveSession(userSession, slidingExpiryTimeSpan);

如果你知道你正在使用的缓存供应商,如Redis的您可以手动更新,而无需重新阅读的条目,如到期超时:

var sessionKey = SessionFeature.GetSessionKey(httpReq.GetSessionId());
redis.ExpireEntryIn(sessionKey, slidingExpiry); //"urn:iauthsession:{sessionId}"


文章来源: How to advance the session timeout in ServiceStack