繁体   English   中英

如何在MVC中实现身份角色管理器

[英]How to implement the Identity Roles Manager in MVC

我对MVC还是很陌生(因为这是我的第一个项目,对于任何误导或错误的解释,我深表歉意),而且我还不完全了解如何扮演用户角色。 我知道这里有很多这些问题,但是没有一个能够帮助我理解角色管理器。

我正在使用ASP NET身份使我的用户,对其进行编辑,整个交易。 我在数据库中拥有所有Identity生成的表及其所有关系。 现在,我可以结交用户,但是我对如何获得这些用户角色一无所知。

我发现角色只是帐户模型/控制器的一部分,例如登录和注册,我只需要更改几行代码即可使其在我自己的数据库中工作。 但是我几乎找不到任何提及角色的代码文件。 我通过Google看到的任何信息都让我无所适从(也就是说,从代码优先和种子植入开始,我作为一个公认的新手和添加了一个数据库并在Visual Studio中使用了代码优先生成器的人就有点不知所措了。 )

我需要更改或写入帐户或身份文件控制器/模型中的某些内容吗,还是像为自己的表创建CRUD操作,然后在其中根据模型创建控制器并从中添加角色?

我正在使用Identity 2.0和MVC 4.5。 先谢谢您的帮助!

----编辑------

我做了很多谷歌搜索,我认为当我创建项目时,没有得到RoleController或ApplicationRoleManager等的代码。这是正常现象还是我设置了错误?

我设法弄清楚了我的问题,并且通过大量尝试将c#转换为vb,我们开始了!

我最终将自己的角色播种到数据库中。 在startup.vb中-在根目录中而不是视图目录中-写以下内容:

Imports Owin
Imports Microsoft.Owin
Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.EntityFramework

<Assembly: OwinStartupAttribute(GetType(Startup))>

Partial Public Class Startup
    Public Sub Configuration(app As IAppBuilder)
        ConfigureAuth(app)
        createRoles()
    End Sub

    Private Sub createRoles()
        Dim UserManager As New UserManager(Of ApplicationUser)(New UserStore(Of ApplicationUser)(New ApplicationDbContext))
        Dim RoleManager As New RoleManager(Of IdentityRole)(New RoleStore(Of IdentityRole)(New ApplicationDbContext))
        Dim role = New IdentityRole()

        If Not RoleManager.RoleExists("Administration") Then
            role.Name = "Administration"
            RoleManager.Create(role)

            UserManager.AddToRole("user id", "Administration")

        End If

        If Not RoleManager.RoleExists("User") Then
            role.Name = "User"
            RoleManager.Create(role)

            UserManager.AddToRole("user Id", "User")
        End If
    End Sub
End Class

我在Startup类中添加了一个新的子过程,以创建我的角色(管理和用户)。 此外,Identity和Identity.EntityFramework的两个导入都需要添加到文件中才能起作用。

在createRoles子目录中,我们需要定义一个新的UserManager(向用户添加角色)和RoleManager(向数据库添加角色)。 在这两个Manager中,“ ApplicationDbContext”将替换为您的DbContext(可在Model文件夹的IdentityModel中找到)。此后,我们需要添加一个新的IdentityRole对象,因此也可以添加一个角色。

接下来,我们检查某个角色是否存在“管理”,它是否不存在,因此我们向角色对象添加名称并使用RoleManager创建它。 由于我的数据库中已经有用户,因此可以使用UserManager向用户添加角色。 我从数据库中获取了用户ID,并在其中输入了角色ID。

对于要添加“用户”的其他角色,我再次执行此操作。 构建项目并展开! 您可以使用具有角色的用户,现在可以将这些角色应用于页面控制器,以使页面只能由“管理员”或“用户”访问。

我在运行该函数后将对该函数的调用注释掉,因此它不会在每个构建版本中都调用它,但是由于存在这些角色,因此不再添加

您可以将这些角色应用于控制器中的页面,如下所示:

<Authorize(Roles:="Administration")>
Public Function yourPage() as ActionResult
    Return View()
End Function

<Authorize(Roles:="Administration, User")>
Public Function yourPage2() as ActionResult
    Return View()
End Function

我希望这可以在将来帮助其他人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM