我需要您的帮助,因为我正在使用 servicestack 作为移动应用程序中使用的 API。我们有自己的身份验证提供程序,但问题是,如果我们不在移动设备上执行任何活动来调用 api,则会话会在 30 分钟后过期,并且用户会从移动应用程序注销。我需要帮助,了解如何将此会话超时时间增加到 5 天或更长。
以下是我在项目中使用的stackservice的版本。
<package id="ServiceStack" version="3.9.56" targetFramework="net45" />
<package id="ServiceStack.Common" version="3.9.56" targetFramework="net45" />
<package id="ServiceStack.Host.AspNet" version="3.9.33" />
<package id="ServiceStack.OrmLite.SqlServer" version="3.9.56" targetFramework="net45" />
<package id="ServiceStack.Redis" version="3.9.57" targetFramework="net45" />
<package id="ServiceStack.Text" version="3.9.56" targetFramework="net45" />
在 ServiceStack 中控制 Session 生命周期的最灵活方法是在每次保存会话时进行拦截,并通过覆盖
OnSaveSession
中的 AppHost
来更改保存的会话过期时间,因此您可以指定会话持续 5 天 与:
public override void OnSaveSession(
IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
base.OnSaveSession(httpReq, session, TimeSpan.FromDays(5));
}
注意:会话保存在注册的 Caching Provider 中,默认情况下使用
MemoryCacheClient
将会话保存在内存中,如果应用程序服务器重新启动,所有经过身份验证的会话都将丢失。您可以通过配置使用任何其他分布式缓存提供程序来在应用程序重新启动时保留会话。