“User.IsInRole”中的多个角色[重复]
Posted
技术标签:
【中文标题】“User.IsInRole”中的多个角色[重复]【英文标题】:Multiple roles in 'User.IsInRole' [duplicate] 【发布时间】: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"))
对我来说看起来非常好(假设逗号分隔的角色不是检查角色的有效方法)。
【参考方案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 感谢您注意到这一点!我只是相应地更正了它。以上是关于“User.IsInRole”中的多个角色[重复]的主要内容,如果未能解决你的问题,请参考以下文章
`[Authorize (Roles="Role")]` 不起作用,User.IsInRole("Role") 始终为 false
ASP.NET 成员资格 - 使用哪个 RoleProvider 以便 User.IsInRole() 检查 ActiveDirectory 组?