【问题标题】:MVC 5 - Roles - IsUserInRole and Adding user to roleMVC 5 - 角色 - IsUserInRole 和将用户添加到角色
【发布时间】:2014-11-02 17:43:09
【问题描述】:

在 MVC4 中,我使用 Roles.IsUserInRole 来检查给定用户是否处于某个角色中。但是,使用 MVC5 我不能再这样做了......

起初,它要求我在 web.config 中启用 RoleManager,但后来我发现 microsoft 已从 Web.Security 转移到 Microsoft.AspNet.Identity。

我现在的问题是,对于 Microsoft.AspNet.Identity,我如何执行类似于 Roles.IsUserInRole 的操作? 和/或创建角色和用户之间的关系。

顺便说一句,我仍在尝试了解新的身份验证方法(ClaimsIdentity?)。

【问题讨论】:

    标签: c# asp.net-mvc-5 claims-based-identity asp.net-roles


    【解决方案1】:

    您应该阅读 http://typecastexception.com/post/2014/04/20/ASPNET-MVC-and-Identity-20-Understanding-the-Basics.aspx 了解 Identity 2.0 的基础知识!

    还有一个完整的演示项目可以帮助您入门: https://github.com/TypecastException/AspNet-Identity-2-With-Integer-Keys

    如果您将此作为身份基础的基础,您最终会得到如下结果:

    var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
    const string name = "YourUsername"
    const string roleName = "Admin";
    
    var user = userManager.FindByName(name);
    //check for user roles
    var rolesForUser = userManager.GetRoles(user.Id);
    //if user is not in role, add him to it
    if (!rolesForUser.Contains(role.Name)) 
    {
        userManager.AddToRole(user.Id, role.Name);
    }
    

    【讨论】:

    • 好的,它成功了......谢谢。顺便说一句,授权属性不起作用......有什么想法吗?我现在看不懂这篇文章,但我会尽快从上到下阅读。
    • 我建议你再问一个对这个问题有充分描述的问题,因为我在这里要做的就是猜测。
    • 好的,谢谢我创建了帖子stackoverflow.com/questions/25743113/…
    【解决方案2】:

    上面的帖子真的很有帮助(谢谢 Serv,如果我的声誉允许我会投票)。它帮助我解决了我遇到的一个问题,我做了一些小改动以适应我想要实现的目标。我的特殊问题是,如果当前用户在给定的角色组中,我想检查 MVC 视图。我还发现 Roles.IsUserInRole 不再工作。

    如果您在视图中执行此操作,但使用 ASP.NET 标识 2.0 而不是以前 MVC 版本提供的简单成员资格提供程序,则以下作为单行解决方案可能会有所帮助:

    bool isAdmin = HttpContext.Current.User.IsInRole("Admin");
    

    然后您可以将它与 HTML 结合使用,以选择性地显示菜单项(这是我一直使用它的目的),如下所示:

    @if (isAdmin)
    {
        <li>@Html.ActionLink("Users", "List", "Account")</li>
    }
    

    这允许我阻止访问用户不是“管理员”角色成员的用户管理超链接。

    【讨论】:

    • 很好(1up),这对我也有帮助!
    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多