【问题标题】:Multiple roles in 'User.IsInRole' [duplicate]“User.IsInRole”中的多个角色[重复]
【发布时间】:2016-01-30 06:19:39
【问题描述】:

我的页面上有 3 个角色,所以我想访问两个角色的链接。

我尝试这样的事情

@if(User.IsInRole("Admin,User")) 
{
 //my code
}

或者这个

@if (User.IsInRole("Admin") && User.IsInRole("User"))

{
 //my code
}

没有人工作,我设法工作的唯一一个是:

 @if (User.IsInRole("Admin")

但最后一个它只适用于一个角色,我该怎么做?

【问题讨论】:

  • 不工作是什么意思? @if (User.IsInRole("Admin") && User.IsInRole("User")) 对我来说看起来非常好(假设逗号分隔的角色不是检查角色的有效方法)。

标签: c# asp.net razor roles


【解决方案1】:

没有人工作,我设法工作的唯一一个是:

这是合理的,如果您考虑方法 IsInRole 的作用。

获取一个值,指示当前登录的用户是否在 指定的角色。该 API 仅用于在 ASP.NET 请求线程的上下文,以及在该批准的用例中 它是线程安全的。

也就是说,用户可能具有管理员角色(因此 UserIsInRole("Admin") 返回 true)但可能具有用户角色(因此 UserIsInRole("User") 返回 false)。所以User.IsInRole("Admin") && User.IsInRole("User") 将评估为false

你可能需要的是这个:

// If the user's role is either admin or user then do something
@if (User.IsInRole("Admin") || User.IsInRole("User"))
{
    //my code
}

【讨论】:

  • 所以我试试@if (User.IsInRole("Admin") | User.IsInRole("User"))
  • @Joan 我很高兴能帮上忙 :)
  • “一个用户不能同时担任两个角色” - 请说明这是在哪个身份验证框架中(在这种情况下,它看起来像 WebMatrix SimpleRoleProvider,如果是的话)甚至是真的)。许多(如果不是所有其他角色提供者)确实支持用户同时担任多个角色。例如还有方法GetRolesForUser()
  • 我知道这是几年前的事了,但万一其他人偶然发现这一点,“据说用户不能同时担任两个角色。”是一个完全错误的陈述。默认的 EntityFramework User 对象甚至有一个ICollection<TRole>msdn.microsoft.com/en-us/library/…
  • @nurdyguy 感谢您注意到这一点!我只是相应地更正了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 2019-08-14
相关资源
最近更新 更多