参考:Docs ASP.NET Core 身份验证

ASP.NET Core Identity 是一个用户管理系统

  • 它是一个完善的、全面的、庞大的框架
  • 创建、查询、更改、删除 账户信息
  • 验证和授权
  • 密码重置
  • 双重身份认证
  • 支持扩展登录,如微软、Facebook、QQ 等
  • 它提供了一个丰富的 API,并且这些 API 还可以进行大量的扩展

    添加 Identity 的步骤

  1. 让 DbContext 类继承 IdentityDbContext 类:

    1. public class AppDbContext : IdentityDbContext
    2. {
    3. public AppDbContext(DbContextOptions options) : base(options)
    4. {
    5. }
    6. ...
    7. }
  2. 添加 Identity 服务:

    1. public void ConfigureServices(IServiceCollection services)
    2. {
    3. services.AddDbContextPool<AppDbContext>(
    4. options => options.UseSqlServer(_configuration.GetConnectionString("StudentDBConnection"))
    5. );
    6. // 1.添加 Identity 服务 2.使用 AppDbContext 存储与身份认证相关的数据
    7. services.AddIdentity<IdentityUser, IdentityRole>()
    8. .AddEntityFrameworkStores<AppDbContext>();
    9. ...
    10. }
  3. 添加中间件:

    1. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    2. {
    3. ...
    4. app.UseStaticFiles();
    5. // 注意要放在 UseMvc 之前
    6. app.UseAuthentication();
    7. app.UseMvc(routes =>
    8. {
    9. routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
    10. });
    11. }
  4. 因为 Identity 重写过 OnModelCreating,所以需要保证 Add-Migration 时它能被调用到,于是得修改我们的 OnModelCreating

    1. protected override void OnModelCreating(ModelBuilder modelBuilder)
    2. {
    3. base.OnModelCreating(modelBuilder);
    4. modelBuilder.Seed();
    5. }
  5. 生成 ASP.NET Core Identity 表

    1. Add-Migration
    2. Update-Database
  6. 查看生成好的表

    image.png