我遵循了this question关于如何实现自定义IPrincipal
的建议(我需要它来存储userId
,以便减少对数据库的调用以获得userId
)。
现在,如果我登录网站并离开大约20分钟,不要在网站上做任何事情并刷新页面再次请求登录。
自定义实现的IPrincipal是否有一些扩展时间,是否有如何扩展它?
答案 0 :(得分:1)
IPrincipal
只是任何实施类必须遵守的合同。
超时实际上取决于实现,但ASP .NET应用程序的一个重要考虑应该是formsAuthentication超时值。
这将是ASP .NET在没有用户输入的情况下保持会话打开的时间。之后,它将不会保留有关已登录用户的信息。大多数iPrincipal实现依赖于将Context.User.Identity.Name
与数据库中的条目进行匹配。一旦命中了表单身份验证超时,该值(以及IsAuthenticated
== true)状态将丢失,从而导致请求单独登录。如果您只想简单地延长超时,请先尝试调整该值。
如果您正在寻找更长期的解决方案(即“让我登录”功能),最常见的方法是通过cookie将令牌发送到用户的浏览器,随后访问该站点进行检查
这里的策略通常是: -
此处有关最佳做法的文章: -
http://jaspan.com/improved_persistent_login_cookie_best_practice