【问题标题】:How to check user is in many roles in asp.net identity如何检查用户在 asp.net 身份中的多个角色
【发布时间】:2014-05-01 10:20:11
【问题描述】:

您好,我需要检查用户是否处于其中一个角色中,并且我对找到的不同版本的代码感到困惑。让我先告诉你我现在有什么

_manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());

var currentUser = _manager.FindById(User.Identity.GetUserId());      

if (!_manager.IsInRole(currentUser.Id, "admin"))
{

}

和应用程序用户

public class ApplicationUser : IdentityUser
{        
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{

}

所以我想检查用户是否在其中一个角色中。例如管理员、贡献者、超级用户等

我发现this example 看起来不错,但我必须在 web.config 中进行以下更改才能使其正常工作。我不需要像目前那样对我的代码执行此操作。

roleManager enabled="true"

我尝试在UserManager.IsInRole 上进行更多研究,但我找不到很多关于它的信息。多读一点,我明白我发现的帖子是关于简单会员制的。

当我使用身份时,我不应该使用我找到的代码(参考链接和接受的答案),因为这将混合身份和简单会员资格?特别是我参考这条线Roles.GetRolesForUser。身份有类似的方法吗?我想我对不同的会员框架感到困惑,不知道什么是正确的用途。我希望有人可以解释我理解。

(我仍然想要我在标题中提出的问题的解决方案,但我也确实需要理解=)

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-identity simplemembership


    【解决方案1】:

    好吧,我找到了一种方法。我不知道 UserManager 返回的 User 对象具有 Roles 属性以及用户拥有的角色集合。

    using Microsoft.AspNet.Identity;
    var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
    
    var roles = new List<string> { "admin", "contributor" };
    var currentUser = manager.FindById(User.Identity.GetUserId());  
    
    if (currentUser.Roles.Any(u => roles.Contains(u.Role.Name)))
    {
    
    }     
    

    有关 Asp.net Identity 成员资格的更多信息 .. 这似乎是很好的资源。

    http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples/

    【讨论】:

      【解决方案2】:

      好吧,我想这完全取决于您的要求,即如果可以,请使用简单的会员资格。 如果您正确集成了成员资格(表单身份验证),那么您应该真正使用 User.IsInRole("Role")。

      从您发布的内容看来,您正在使用自己的自定义用户对象,因此在这种情况下,我将使用自定义会员提供程序,网上有很多这样的例子,我发现的第一个 1 http://www.codeproject.com/Articles/165159/Custom-Membership-Providers

      这个想法是只覆盖所有的 Membership 方法并从您的服务层返回您自己的用户数据。

      希望对您有所帮助。 李

      【讨论】:

      • 我认为我没有做任何定制的事情。 ApplicationUser 只是从 IdentityDbContext 派生的 IdentityUser。我想我需要一个关于 Asp.net Identity 的好例子,以及其他会员框架之间的一些比较。
      猜你喜欢
      • 2013-12-06
      • 1970-01-01
      • 2017-07-30
      • 2014-02-05
      • 2017-11-03
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      相关资源
      最近更新 更多