【问题标题】:Asp.net generic principal problemAsp.net 泛型主体问题
【发布时间】:2011-04-20 18:33:08
【问题描述】:

使用此代码进行身份验证:

HttpContext.Current.User=new GenericPrincipal
  (new GenericIdentity(user.UserName), roles);
FormsAuthentication.SetAuthCookie(user.UserName,false);

问题是 - 在下一个请求中,HttpContext.Current.User.IsAuthenticated 是 true,但 HttpContext.Current.User.IsInRole("admin") 是错误的。

谷歌上有一个lot of info,但不知何故没有像往常一样有帮助。

尝试将此添加到我的 web.config:

<system.web>
  <roleManager enabled="false" />
</system.web>

我不想使用会员提供者。

有什么建议吗?

【问题讨论】:

  • 你使用什么样的角色提供者?
  • blind rabbit mode ON 抱歉,我在这里度过了一个艰难的下午 :d Reflector 说你做得对......也许你应该仔细检查一下你的角色字符串数组

标签: asp.net asp.net-mvc security forms-authentication


【解决方案1】:

如果您使用表单身份验证,我认为您可能会尝试使用错误类型的身份。使用 FormsIdentity 可能会更好。

Article on Best Practices for Forms Authentication (might be outdated)

【讨论】:

  • genericIdentityhave't property Roles
  • @Joseph 我的错误。实际上 - 我确实在用户上调用它。
  • @Amit 好吧,我以为可能是,但我可能已经找到了其他东西
  • @Joseph 看起来很有希望。像往常一样过于复杂,但实际上可能有效。
  • 也无济于事。它确实从 cookie 中解密身份,将其设置为 HttpContext.Current.User,但在控制器操作中,User.IsInRole("admin") 仍然是错误的。和以前一样的场景。
【解决方案2】:

看起来 IsInRole 方法在错误的接口上。试试

HttpContext.Current.User.IsInRole("admin")

【讨论】:

  • 不,那只是一个错字。没有仔细检查并写了我记得的例子。这不是解决方案。 HttpContext.Current.User.Identity.IsInRole 甚至无法编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 2011-01-07
  • 1970-01-01
  • 2014-01-01
相关资源
最近更新 更多