ASP.NET Razor 页面标识
ASP.NET Razor Pages Identity
我几乎是 ASP.NET 的新手,对此我有疑问。
我创建了一个项目 - 使用 Razor Pages 的 Web 应用程序,我进行了依赖注入并进行了一些迁移。我有一些 classes,比如 Student、Teacher 和 Admin。我正在使用身份和代码优先。
我的问题是:
我有很多用户,但对于我的数据库,所有这些用户只有一个 table。我给他们一些角色,在一个 table 我有 UserId 和 RoleId,这意味着他们有联系。
用户table:
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)
);
学生class:
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; }
}
老师class:
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; }
}
问题:
我如何才能从这个 table“用户”中得到确切的教师或学生?我在 google 中进行了搜索,但几乎所有关于 MVC 的信息,而不是关于 Razor Pages 的信息。
提前致谢!
我发现了我的错误。
我必须更改鉴别器,因为只有 IdentityUser,但我尝试调用 StudentUser 或 TeacherUser。
现在一切都很完美。我希望这些信息可以帮助别人。
我几乎是 ASP.NET 的新手,对此我有疑问。
我创建了一个项目 - 使用 Razor Pages 的 Web 应用程序,我进行了依赖注入并进行了一些迁移。我有一些 classes,比如 Student、Teacher 和 Admin。我正在使用身份和代码优先。
我的问题是: 我有很多用户,但对于我的数据库,所有这些用户只有一个 table。我给他们一些角色,在一个 table 我有 UserId 和 RoleId,这意味着他们有联系。
用户table:
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)
);
学生class:
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; }
}
老师class:
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; }
}
问题: 我如何才能从这个 table“用户”中得到确切的教师或学生?我在 google 中进行了搜索,但几乎所有关于 MVC 的信息,而不是关于 Razor Pages 的信息。
提前致谢!
我发现了我的错误。
我必须更改鉴别器,因为只有 IdentityUser,但我尝试调用 StudentUser 或 TeacherUser。
现在一切都很完美。我希望这些信息可以帮助别人。