我有一个使用VS模板的webapp,其中包含创建用户等的页面。我创建了用户,他们可以/不能根据各种文件夹中的web.config访问文件夹。
现在我需要添加角色并将角色附加到用户。
我可以使用
创建角色 Dim createRole As String = RoleTextBox.Text
Dim RoleManager = New RoleManager(Of IdentityRole)(New RoleStore(Of IdentityRole)(New ApplicationDbContext()))
Try
If RoleManager.RoleExists(createRole) Then
Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' already exists. Please specify a different role name."
Return
End If
RoleManager.Create(New IdentityRole(createRole))
等
接下来,我需要将角色附加到用户,我有:
Public Class admin_superadmin
Inherits System.Web.UI.Page
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim UserManager = New UserManager(Of IdentityUser)(New UserStore(Of IdentityUser)(New IdentityDbContext()))
UserManager.AddToRole(DropDownList5.SelectedValue, DropDownList6.SelectedValue)
Label1.Text = DropDownList5.SelectedItem.Text + " Was added to the " + DropDownList6.SelectedValue + " Role."
End Sub
然而,当运行时,在usermanager.addtorole行失败并显示以下消息: System.InvalidOperationException:找不到UserId。
数据库表是由应用程序创建的。在表AspNetUserRoles中是字段UserID,RoleID。
非常感谢有人可以帮助确定问题。
答案 0 :(得分:0)
作为一名想要对用户进行身份验证但从未使用过身份或MVC的前端设计人员,我最终想出来了,这将是一个十分钟的方式来启动和运行一个简单的Web应用程序身份验证和角色,使用远程数据库:
档案>新项目>网络> ASP.NET Web应用程序>网络表格
在web.config中,将DefaultConnection更改为指向我现有的远程MSSQL db
在解决方案资源管理器帐户> Register.aspx>在浏览器中查看
在浏览器中,注册一个新用户:在远程数据库中,为我设置了所有需要的身份验证表,现在我可以在“帐户”文件夹中的VS模板项目页面中添加和修改用户。但我还不能使用角色。
项目>添加新项> VB(对我来说)>数据> 我现在可以创建一个管理文件夹,其中包含一些控件和代码
UserManager.AddToRole(user.Id,)将成功,并且不会在我原始问题中报告错误。 希望这些步骤可以帮助另一个初学者。