.net 5 不同类型用户的身份

问题描述

你好,我在 .net 5 上做一个项目,系统有 2 个用户,他们有自己的管理面板供员工使用,一个供客户使用,员工管理员可以创建其他员工并为他们分配角色和权限客户也可以为其员工分配任何角色和权限。我正在使用 .net Identity,最好的方法是什么?我应该将用户添加一个表 AspNetUsers 表中并通过他们的角色区分他们还是有什么方法可以创建员工和客户并在两个不同的用户表上执行所有身份特征和内容?我是一个新手,有点困惑,感谢任何帮助!

解决方法

我正在使用 .net Identity,最好的方法是什么?应该 我将用户添加到一张表 AspNetUsers 表中并区分它们 通过他们的角色或者有什么方法可以创建员工和 客户并在两个不同的 用户表?我是一个新手,有点困惑任何帮助是 赞赏

既然你已经使用了Asp.net core Identity,你可以在Startup.ConfigureServices方法中附加AddRoles来添加Role服务,代码如下:

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(
        Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
    .AddRoles<IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

[注意] 上面的代码配置为使用默认的 IndentityUser 和 IdentityRole 模型,如果您想add custom data for User or Roles table,您可以将 IdentityUser 或 IdentityRole 更改为您的自定义模型。

如果应用程序未配置身份服务,您可以选中 Introduction to Identity on ASP.NET CoreScaffold Identity in ASP.NET Core projects,然后配置身份服务。

配置身份服务后,您可以创建一个RoleController,然后使用RoleManager 来管理角色。并且在注册页面,用户创建成功后,您可以使用UserManager.AddToRoleAsync() method将用户添加到特殊角色。

Users 将存储在 AspNetUsers 表中,roles 将存储在 AspNetRoles 表中,User 和 Role 之间的关系将存储在 AspNetUserRoles 表中,您可以根据 UserIdRoleId 找到它们,请检查。

然后,您可以根据角色配置授权或根据角色创建策略,参考以下文章:

Role-based authorization in ASP.NET Core

Adding Role Authorization to a ASP.NET MVC Core Application