使用ServiceStack增加AuthSession

时间:2018-10-10 08:30:43

标签: c# .net sql-server api

我需要您的帮助,因为我正在将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" />

1 个答案:

答案 0 :(得分:1)

在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将会话保存在内存中,如果App Server重新启动,则所有经过身份验证的会话都将丢失。通过配置为使用其他任何distributed Caching Providers,您可以在App重新启动期间保留会话。