【问题标题】:MVC4 : User.IsInRole not working properlyMVC4:User.IsInRole 无法正常工作
【发布时间】: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


【解决方案1】:

您可能会丢失您的 cookie。尝试添加: &lt;forms loginUrl="~/Account/Login" cookieless="UseCookies" timeout="2880" /&gt;

这解决了我们的 MVC 应用程序中的很多问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多