c# - 使用 ServiceStack 增加 AuthSession

标签 c# .net sql-server api

我需要你的帮助,因为我正在为移动应用程序中使用的 api 使用 servicestack。我们有自己的身份验证提供程序,但问题是如果我们不在移动设备上执行任何事件来调用 api,则 session 会在 30 分钟后过期并且用户将从移动应用程序注销。我需要有关如何将此 session 超时增加到 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" />

最佳答案

最灵活的控制方式Session ServiceStack 中的生命周期是通过在每次保存 session 时进行拦截,并通过覆盖 AppHost 中的 OnSaveSession 来更改保存的 session 到期时间,因此您可以指定 session 持续 < strong>5 天:

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

注意: session 保存在已注册的 Caching Provider 中默认情况下,它使用 MemoryCacheClient 将 session 保存在内存中,如果应用服务器重新启动,所有经过身份验证的 session 都将丢失。您可以通过配置使用任何其他 distributed Caching Providers 来在应用程序重新启动时保持 session 。 .

关于c# - 使用 ServiceStack 增加 AuthSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52735877/

相关文章:

c# - 使用 C# 和 Unity 3D 在 Leap Motion 中启用手势

c# - 如何删除在使用属性/字段将自身显示为字符串方面有所不同的重复代码?

c# - 区分 byte[] 和 string 与 JSON .NET

.net - XmlIgnoreAttribute,只在序列化时使用,反序列化时不使用?

c# - FileStream 在应用程序冷启动时非常慢

sql-server - 没有聚合或最大值的 SQL 数据透视查询

c# - 如何以编程方式诊断原因、修复或解决与 Adob​​e ActiveX/COM 相关的错误 0x80004005?

asp.net - 为什么我们不在 ASP.NET 页面中使用 html 标签控件

c# - 具有包含 7 亿条记录的表的数据库

sql-server - 找不到列 "dbo"或用户定义函数或聚合 "dbo.Splitfn",或者名称不明确