如何在 ASP.NET Core Identity 中分离两种用户类型(学生和教师)的登录系统?

问题描述 投票:0回答:1

我正在开发一个 ASP.NET Core Identity 项目,其中有两种不同类型的用户:学生和教师。要求如下:

  • 学生帐户只能登录学生网站。
  • 教师帐号只能登录教师网站。
  • 学生帐户不应该能够登录教师网站,反之亦然。它甚至找不到用户名。

类似于 2 个登录系统。

代码 ER

public class ApplicationUser: IdentityUser
{

}

public class Student: ApplicationUser
{
   
}

public class Teacher: ApplicationUser
{

}

public class WorkNextDbContext: IdentityDbContext<ApplicationUser>
{
    public WorkNextDbContext(DbContextOptions options) : base(options)
    {
        
    }

    public virtual DbSet<Student> Students { get; set; }
    public virtual DbSet<Teacher> Teachers { get; set; }
}

目前,我正在使用 ASP.NET Core Identity,它会在同一个

aspnetusers 
表中生成两种用户类型。这会导致两种用户类型之间的用户名重复的问题。我认为角色在这种情况下不合适,因为这是两种完全不同的用户类型,具有不同的登录系统。

aspnetusers Table

身份证 鉴别器 用户名
1 学生 阿里
2 老师 鲍勃
3 学生 Bob - 错误,重复的用户名,用户名必须是唯一的,但身份核心在 1 个表中生成两种类型的用户

如何设置两个独立的登录系统,同时防止这些用户类型在同一个 aspnetusers 表中重叠并导致用户名冲突?有没有办法让学生和教师帐户在数据库中完全分开,或者有其他符合核心身份最佳实践的解决方法吗?

c# asp.net asp.net-identity identity asp.net-core-identity
1个回答
0
投票

我认为你应该将这两个实体的所有内容分开。

单独的表和上下文:使用不同的表和上下文以避免用户名重复。

不同的身份验证流程:配置不同的登录控制器和视图。

自定义 Cookie 身份验证方案:通过使用单独的 Cookie 防止会话冲突。

基于角色的策略:限制学生和教师访问特定区域。

这将确保两个独立的登录系统,用户不会重叠。

© www.soinside.com 2019 - 2024. All rights reserved.