'User.IsInRole'中的多个角色

Joa*_*oan 7 c# asp.net roles razor

我的页面上有3个角色,因此我希望能够访问与两个角色的链接.

我尝试这样的事情

@if(User.IsInRole("Admin,User")) 
{
 //my code
}
Run Code Online (Sandbox Code Playgroud)

或这个

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

{
 //my code
}
Run Code Online (Sandbox Code Playgroud)

没有人工作,我唯一能成功的是:

 @if (User.IsInRole("Admin")
Run Code Online (Sandbox Code Playgroud)

但是最后一个只有一个角色,我该怎么做呢?

Chr*_*tos 16

没有人工作,我唯一能成功的是:

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

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

也就是说,用户可能具有Admin的角色(因此UserIsInRole("Admin")返回true)但可能没有 User的角色(因此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
}
Run Code Online (Sandbox Code Playgroud)

  • _"用户不能担任两个角色"_ - 请说明在哪种认证框架中就是这种情况(在这种情况下,它看起来像WebMatrix SimpleRoleProvider,如果这是真的).许多(如果不是所有)其他角色提供者确实支持用户同时处于多个角色.例如,还有方法`GetRolesForUser()`. (4认同)
  • 我知道这已经有几年了,但万一其他人偶然发现了这一点,“也就是说,一个用户不能同时担任两个角色。” 是完全错误的陈述。默认的 EntityFramework User 对象甚至有一个 `ICollection<TRole>`,https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.entityframework.identityuser(v=vs.108)。 aspx (2认同)