【问题标题】:Cannot add user+role record in aspnet Identity无法在 aspnet 身份中添加用户+角色记录
【发布时间】:2016-01-04 13:10:42
【问题描述】:
  • Web 表单项目/VB/ASP 4.5.2/VS2015
  • EntityFramework 6.1.3 / Identity.EntityFramework 2.2.1
  • NuGet 中的其他包都显示当前版本

我有一个使用 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:找不到用户 ID。

数据库表是由应用程序创建的。在表 AspNetUserRoles 中是字段 UserID、RoleID。

如果有人可以帮助确定问题,我们将不胜感激。

【问题讨论】:

    标签: asp.net vb.net entity-framework


    【解决方案1】:

    作为一个想要验证用户身份但从未使用过 Identity 或 MVC 的前端设计师来到这里,最后我想通了,这将是一个十分钟的方法来启动并运行一个简单的 Web 应用程序身份验证和角色,使用远程数据库:

    文件 > 新建项目 > Web > ASP.NET Web 应用程序 > Web 表单

    在 web.config 中,将 DefaultConnection 更改为指向我现有的远程 MSSQL 数据库

    在解决方案资源管理器帐户 > Register.aspx > 在浏览器中查看

    在浏览器中,注册一个新用户:在远程数据库中,为我设置了所有需要的身份验证表,我现在可以从帐户文件夹中的 VS 模板项目页面添加和修改用户。但我还不能使用角色。

    项目 > 添加新项目 > VB(对我而言)> 数据 > ADO.NET 实体数据模型 > 数据库中的 EF 设计器 > 使其引用 DefaultConnection > 勾选所有表

    我现在可以创建一个管理文件夹,并在其中创建一个包含一些控件和代码的页面 UserManager.AddToRole(user.Id, ) 会成功并且不会给出我原来问题中报告的错误。

    希望这些步骤可能对其他初学者有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      相关资源
      最近更新 更多