首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义IPrincipal过期问题

自定义IPrincipal过期问题
EN

Stack Overflow用户
提问于 2012-10-31 05:40:23
回答 1查看 418关注 0票数 1

我听从了this question关于如何实现自定义IPrincipal的建议(我需要它来存储userId,以便减少对数据库的调用,只获得userId)。

现在,如果我登录网站并离开约20分钟,不要在网站上做任何事情,并刷新页面,它再次要求登录。

自定义实现的IPrincipal是否有过期时间?如果有,如何延长过期时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 06:01:48

IPrincipal只是一个任何实现类都必须遵守的约定。

超时时间实际上取决于实现,但在ASP应用程序上,一个重要的考虑因素应该是formsAuthentication超时值。

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

这将是ASP .NET在没有用户输入的情况下保持会话打开的时间。在此之后,它将不会保留任何有关登录用户的信息。大多数iPrincipal实现都依赖于将Context.User.Identity.Name与数据库中的条目进行匹配。一旦达到窗体身份验证超时,该值(和IsAuthenticated == true )状态就会丢失,从而导致请求单独登录。如果您只想简单地延长超时时间,请先尝试调整该值。

如果您正在寻找更长期的解决方案(即“让我保持登录”功能),最常见的方法是通过cookie将令牌发送到用户的浏览器,该cookie会在随后访问网站时进行检查。

通常,这里的策略是:

  • 检查cookie
  • 从cookie
  • 拉取令牌值如果找到匹配的用户,请自动登录该用户并为其提供FormsAuthentication票证。

有关最佳实践的文章如下:

http://jaspan.com/improved_persistent_login_cookie_best_practice

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13147973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档