“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”中的多个角色[重复]的主要内容,如果未能解决你的问题,请参考以下文章

User.IsInRole 返回 false

aspnet 身份中用户的多个角色

`[Authorize (Roles="Role")]` 不起作用,User.IsInRole("Role") 始终为 false

ASP.NET 成员资格 - 使用哪个 RoleProvider 以便 User.IsInRole() 检查 ActiveDirectory 组?

ASP .NET 中没有表单身份验证的基于角色的安全性

我如何检查 javascript 中的用户角色(没有剃须刀或控制器)