【问题标题】:How to add new userId roleId to AspNetUserRoles Table and remove a row from AspNetUserRoles Table?如何将新的 userId roleId 添加到 AspNetUserRoles 表并从 AspNetUserRoles 表中删除一行?
【发布时间】:2021-08-27 07:14:44
【问题描述】:

我想将新的 userID 和 roleId 添加到 AspNetUserRoles 表中。 我搜索了一下,但还是没有得到正确的答案。

AspNetUserRoles 表是这样的。

|userId | roleId |
|abc-12 | 1      |
|abc-12 | 2      |
|dcs_32 | 2      |

如何创建AspNetUserRoles 的新对象并将新的userIDroleId 添加到AspNetUserRoles 表并从AspNetUserRoles 表中删除一行?

【问题讨论】:

  • 使用 UserManager 方法比使用 SQL 更好。你需要 SQL 吗?
  • 不,我需要 UserManager 方法

标签: asp.net-core asp.net-identity


【解决方案1】:

查看 Microsoft Identity 框架中的基本方法。

喜欢:

await _userManager.AddToRoleAsync(user, role.Name);

UserManager 公开了您需要的所有方法。

【讨论】:

  • 非常感谢。如何从 AspNetUserRoles 表中删除?你有什么想法吗?
  • How to remove from AspNetUserRoles Table? 您可以调用RemoveFromRoleAsync(TUser, String) method 将指定用户从指定角色中删除。
【解决方案2】:

为了创建角色,您必须使用 RoleManager。 有方法 CreateAsync(IdentityRole)。

为了给用户分配角色,你必须使用 UserManager。 有方法 AddToRoleAsync(IdentityUser, role)。

这两个类都是 Microsoft.AspNetCore.Identity 的成员。

 private readonly UserManager<IdentityUser> _userManager;
 private readonly RoleManager<IdentityRole> _rolemanager;

【讨论】:

    【解决方案3】:

    假设您使用的是官方Identity,您将拥有以下数据库表。

    • AspNet 用户
    • AspNetRoles
    • AspNetUserRoles
    • ...

    他们可能通过以下命令创建

    dotnet new webapp --auth Individual -o WebApp1
    

    如果你想修改一些东西,比如登录页面布局,你需要Scaffold Identity

    如果您想更改这些表格字段,您需要这个Customize the model

    添加自定义用户和角色后,必须修改之前使用IdentityUser的地方。

    UserManager<IdentityUser>
    

    需要修改

    UserManager<ApplicationUser>
    

    ApplicationUser 是您的自定义用户模型

    如果您没有更改,将显示此error

    InvalidOperationException:没有为“Microsoft.AspNetCore.Identity.UserManager [Microsoft.AspNetCore.Identity.IdentityUser]”类型注册的服务。

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2015-11-27
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      相关资源
      最近更新 更多