自定义IPRINCIPAL EURPURITATION问题



我遵循了有关如何实现自定义IPrincipal的建议(我需要它将userId存储在其中,以减少到数据库的调用以获取userId)。
现在,如果我登录到网站并将其留出大约20分钟,请不要在网站上做任何事情,然后再次请求登录。

自定义实施的iPrincipal是否有一定的过期时间,如果它有如何扩展?

IPrincipal只是任何实施类都必须服从的合同。

超时确实取决于实现,但是对ASP .NET应用程序的巨大考虑应该是FormsAuthentication timeout值。

http://msdn.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.timeout.timeout.aspx

这是ASP .NET在没有用户输入的情况下保持会话打开的时间。之后,它不会保留有关登录用户的信息。大多数Iprincipal实现都依赖于将Context.User.Identity.Name与数据库中的条目匹配。表单身份验证超时被击中,丢失了该值(以及IsAuthenticated == true)状态,从而导致请求单独登录。如果您只想简单地扩展超时,请先尝试调整该值。

如果您正在寻找长期解决方案(即"保持我登录"函数),最常见的方法是通过cookie将令牌发送给用户的浏览器,该cookie会在随后访问该网站的情况下检查。

通常这里的策略是: -

  • 检查cookie
  • 从cookie中拉动令牌值
  • 如果找到了匹配的用户,请自动使用用户,并给他们一个formauthentication票。

有关最佳实践的文章: -

http://jaspan.com/impreved_persistent_login_cookie_best_practice

相关内容

  • 没有找到相关文章