Я пытаюсь реализовать проверку подлинности на основе ролей с удостоверением asp.net, прошел через множество сайтов и учебных пособий, и я думаю, что я почти на месте, но чего-то не хватает, как показано ниже.
К вашему сведению, я изменил свой идентификационный код, чтобы все первичные ключи имели тип Integer, а не String.
С учетом сказанного, следуя некоторым учебным пособиям и примерам (например, https://code.msdn.microsoft.com/ASPNET-MVC-5-Security-And-44cbdb97), Iдобавили в мой класс Startup.vb следующий код для создания ролей администратора и пользователя:
Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.EntityFramework
Imports Microsoft.Owin
Imports Owin
Imports System.Security.Claims
<Assembly: OwinStartupAttribute(GetType(Startup))>
Partial Public Class Startup
Public Sub Configuration(app As IAppBuilder)
ConfigureAuth(app)
CreateRolesandUsers()
End Sub
' https://code.msdn.microsoft.com/ASPNET-MVC-5-Security-And-44cbdb97
Private Sub CreateRolesandUsers()
Dim context As ApplicationDbContext = New ApplicationDbContext()
Dim roleManager = New RoleManager(Of IdentityRole)(New RoleStore(Of IdentityRole)(context))
Dim UserManager = New UserManager(Of ApplicationUser, Integer)(New UserStore(Of ApplicationUser)(context))
If Not roleManager.RoleExists("Admin") Then
Dim role = New Microsoft.AspNet.Identity.EntityFramework.IdentityRole()
role.Name = "Admin"
roleManager.Create(role)
Dim user = New ApplicationUser()
user.UserName = "MyAdmin"
user.Email = "myemail@gmail.com"
Dim userPWD As String = "Testing@DRFFG"
Dim chkUser = UserManager.Create(user, userPWD)
If chkUser.Succeeded Then
Dim result1 = UserManager.AddToRole(user.Id, "Admin")
End If
End If
If Not roleManager.RoleExists("User") Then
Dim role = New Microsoft.AspNet.Identity.EntityFramework.IdentityRole()
role.Name = "User"
roleManager.Create(role)
End If
End Sub
End Class
Ошибка в теме вызывается в следующей строке кода, особенно в части, которая у меня естьвыделено:
Dim UserManager = New UserManager(Of ApplicationUser, Integer)(New UserStore(Of ApplicationUser)(context))
Есть идеи о том, что может быть не так?
Спасибо