如何在MVC中实现Identity Roles Manager

时间:2017-04-12 14:38:52

标签: asp.net asp.net-mvc vb.net asp.net-identity

我对MVC很新(因为这是我的第一个项目,我为任何误导或错误的解释道歉)并且我并不完全理解如何创建用户角色。我知道这里有很多这些问题,但没有一个能够帮助我理解角色经理。

我正在使用ASP NET身份来制作我的用户,编辑它们,整个交易。我在我的数据库中拥有所有Identity生成的表及其所有关系。现在,我可以创建用户,但我对如何获得这些用户角色并不了解。

我认为角色只是帐户模型/控制器的一部分,比如登录和注册,我只需要修改几行代码就可以使用我自己的数据库在项目中工作。但我几乎找不到任何提到角色的代码文件。我通过谷歌看到的任何东西都飞过了我的头脑(因为那个代码首先和播种的东西对我来说有点像吞下新手,并且有人添加了数据库并使用了代码优先的生成器视觉工作室)

我需要更改或写入帐户或身份文件控制器/模型中的某些内容,或者这就像为我自己的表创建CRUD操作,我根据我的模型制作控制器并从那里添加角色?< / p>

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

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

我已经做了更多的谷歌搜索,我认为当我完成项目时,我没有给出RoleController或ApplicationRoleManager等的代码。这是正常的还是我设置错了?

1 个答案:

答案 0 :(得分:0)

我设法解决了我的问题,并且我们去了很多尝试将c#转换为vb!

我最终将我的角色播种到我的数据库中。在startup.vb ---在根目录下不是views目录---写下面的内容:

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 Sub中,我们需要定义一个新的UserManager(将角色添加到用户)和RoleManager(将角色添加到db)。在两个Managers中,'ApplicationDbContext'将替换为你的DbContext(可以在Model文件夹中的IdentityModel中找到)之后我们需要添加一个新的IdentityRole对象,这样我们就可以添加一个角色。

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

我再次为我要添加'User'的其他角色执行此操作。建立项目和volia!您可以使用角色的用户,现在您可以将这些角色应用于页面控制器,以使页面仅由“管理”或“用户”访问。

我在运行它之后注释掉了对该函数的调用,因此它不会在每次构建时调用它,但由于这些角色存在,它将不再添加

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

<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

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