【问题标题】:ASP.NET Razor Pages IdentityASP.NET Razor 页面标识
【发布时间】:2021-07-25 00:35:47
【问题描述】:

我几乎是 ASP.NET 的新手,我有一个关于它的问题。

我创建了一个项目 - 带有 Razor Pages 的 Web 应用程序,我进行了依赖注入并进行了一些迁移。我有一些班级,例如学生、教师和管理员。我正在使用身份和代码优先。

我的问题是: 我有很多用户,但对于我的数据库来说,所有这些用户只有一张表。我给他们一些角色,在一个表中我有 UserId 和 RoleId,这意味着他们有连接。

用户表:

CREATE TABLE [dbo].[AspNetUsers] (
[Id]                            NVARCHAR (450)     NOT NULL,
[UserName]                      NVARCHAR (256)     NULL,
[NormalizedUserName]            NVARCHAR (256)     NULL,
[Email]                         NVARCHAR (256)     NULL,
[NormalizedEmail]               NVARCHAR (256)     NULL,
[EmailConfirmed]                BIT                NOT NULL,
[PasswordHash]                  NVARCHAR (MAX)     NOT NULL,
[SecurityStamp]                 NVARCHAR (MAX)     NULL,
[ConcurrencyStamp]              NVARCHAR (MAX)     NULL,
[PhoneNumber]                   NVARCHAR (MAX)     NULL,
[PhoneNumberConfirmed]          BIT                NOT NULL,
[TwoFactorEnabled]              BIT                NOT NULL,
[LockoutEnd]                    DATETIMEOFFSET (7) NULL,
[LockoutEnabled]                BIT                NOT NULL,
[AccessFailedCount]             INT                NOT NULL,
[AreaCodeAndTown]               NVARCHAR (100)     NULL,
[Discriminator]                 NVARCHAR (MAX)     DEFAULT (N'') NOT NULL,
[Name]                          NVARCHAR (50)      NULL,
[RoadNameAndNumber]             NVARCHAR (100)     NULL,
[StudentUser_Name]              NVARCHAR (50)      NULL,
[TeacherUser_AreaCodeAndTown]   NVARCHAR (100)     NULL,
[TeacherUser_Name]              NVARCHAR (50)      NULL,
[TeacherUser_RoadNameAndNumber] NVARCHAR (100)     NULL,
CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)

);

学生班:

public class StudentUser : IdentityUser
{
    [Required]
    [MaxLength(50)]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [NotMapped] //ignore
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Compare(nameof(Password))]
    [NotMapped] //ignore
    public string ConfirmPassword { get; set; }

    public virtual ICollection<Course> Courses { get; set; }
} 

教师班:

public class TeacherUser : IdentityUser
{
    [Required]
    [MaxLength(50)]
    public string Name { get; set; }
    
    [MaxLength(100)]
    public string RoadNameAndNumber { get; set; }
    
    [MaxLength(100)]
    public string AreaCodeAndTown { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [NotMapped] //ignore
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Compare(nameof(Password))]
    [NotMapped] //ignore
    public string ConfirmPassword { get; set; }
}

ApplicationDbContext:

public class ApplicationDbContext : IdentityDbContext
{

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {}

    public DbSet<AdminUser> AdminUsers { get; set; }
    public DbSet<StudentUser> StudentUsers { get; set; }
    public DbSet<TeacherUser> TeacherUsers { get; set; }
    public DbSet<Course> Courses { get; set; }
    public DbSet<Test> Tests { get; set; }
}

问题: 如何从“用户”表中准确获取教师或学生?我在谷歌搜索,但几乎所有关于 MVC 的信息,而不是关于 Razor Pages。

提前谢谢你!

【问题讨论】:

  • 首先,我希望您为 MVC 找到的大部分内容都与 Razor Pages 相关。但是你的桌子设计有问题。您不应将教师和学生的详细信息都放在用户表中。
  • 那我该怎么处理它们?用教师和学生创建新表,但他们是用户,我该如何处理?

标签: c# asp.net razor-pages identity


【解决方案1】:

我发现了我的错误。

我必须更改我的鉴别器,因为只有 IdentityUser,但我尝试调用 StudentUser 或 TeacherUser。

现在一切都很完美。我希望这些信息可以帮助某人。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2020-08-22
    • 2016-04-01
    • 2021-10-27
    • 2019-05-22
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多