【发布时间】:2013-10-26 01:30:02
【问题描述】:
我正在使用 ASP.NET MVC SimpleMemberShip 提供程序,
登录后一段时间没有任何问题。我检查用户是否是老板,这是有效的。
if (User.IsInRole("Boss")) {
//do something
}
但是几分钟后,当我刷新页面时,User.IsInRole("Boss") 总是返回 false。
我调试并检查了用户是否仍然登录,是的,用户仍然存在,没有任何改变,但 IsInRole 一直返回 false。
当我注销并再次登录时它开始工作。
我认为问题与Sessions 有关,但我找不到任何解决方案。
这就是我在Web.config中的内容
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
更新:
我意识到在我重建项目时会发生这种情况。
【问题讨论】:
-
[Authorize]已申请? (只是好奇) -
您使用的是
Sessions?会不会是你的那个会话过期了? -
@BradChristie,是的,控制器具有
[Authorize]属性。 -
@WannaCSharp,不,我实际上并没有使用会话,我从未在我的项目中使用过会话。但是会员提供者必须使用会话,所以我认为这个问题与会话有关。但是,如果会话过期,为什么我仍然可以获得 User.Identity.Name 以及为什么授权属性不强制我注销?
-
会员不使用会话。
标签: asp.net-mvc asp.net-mvc-4 session simplemembership asp.net-roles