mvc core2.1 Identity.EntityFramework Core 配置 (一)

https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/customize_identity_model?view=aspnetcore-2.1 参考地址

  • 标识模型包含七个实体类型:

    • User -表示的用户
    • Role -表示的角色
    • UserClaim -表示用户拥有的声明
    • UserToken -表示用户的身份验证令牌
    • UserLogin -将用户与一个登录名相关联
    • RoleClaim -表示将授予角色中的所有用户的声明
    • UserRole -加入将用户和角色相关联的实体

    实体类型关系

    这些实体类型通过以下方式彼此相关:

    • 每个User可以具有许多 UserClaims
    • 每个User可以具有许多 UserLogins
    • 每个User可以具有许多 UserTokens
    • 每个Role可以具有许多关联 RoleClaims
    • 每个User可以具有许多关联Roles,和每个Role可以与多个用户相关联
      • 这是一个多对多关系,这需要在数据库中的联接表。 联接表均由表示UserRole实体。
dotnet new mvc -o  IdentityMvc
cd IdentityMvc
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
Startup.cs->ConfigureServices

using IdentityMvc.Data;
using Microsoft.EntityFrameworkCore;
using IdentityMvc.Models;
using Microsoft.AspNetCore.Identity;

 1  services.AddDbContext<ApplicationDbContext>(options =>
 2                 options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
 3 
 4             services.AddIdentity<ApplicationUser, IdentityRole>()
 5                 .AddEntityFrameworkStores<ApplicationDbContext>()
 6                 .AddDefaultTokenProviders();
 7 
 8             services.Configure<IdentityOptions>(options =>
 9             {
10                 // Password settings
11                 options.Password.RequireDigit = true;
12                 options.Password.RequiredLength = 8;
13                 options.Password.RequireNonAlphanumeric = false;
14                 options.Password.RequireUppercase = true;
15                 options.Password.RequireLowercase = false;
16                 options.Password.RequiredUniqueChars = 6;
17 
18                 // Lockout settings
19                 options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
20                 options.Lockout.MaxFailedAccessAttempts = 10;
21                 options.Lockout.AllowedForNewUsers = true;
22 
23                 // User settings
24                 options.User.RequireUniqueEmail = true;
25             });
26 
27             services.ConfigureApplicationCookie(options =>
28             {
29                 // Cookie settings
30                 options.Cookie.HttpOnly = true;
31                 options.Cookie.Expiration = TimeSpan.FromDays(150);
32                 // If the LoginPath isn't set, ASP.NET Core defaults 
33                 // the path to /Account/Login.
34                 options.LoginPath = "/Account/Login";
35                 // If the AccessDeniedPath isn't set, ASP.NET Core defaults 
36                 // the path to /Account/AccessDenied.
37                 options.AccessDeniedPath = "/Account/AccessDenied";
38                 options.SlidingExpiration = true;
39             });
View Code

Data->ApplicationDbContext 新建

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
 6 using Microsoft.EntityFrameworkCore;
 7 using IdentityMvc.Models;
 8 
 9 namespace IdentityMvc.Data
10 {
11     public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
12     {
13         public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
14             : base(options)
15         {
16         }
17 
18         protected override void OnModelCreating(ModelBuilder builder)
19         {
20             base.OnModelCreating(builder);
21             // Customize the ASP.NET Identity model and override the defaults if needed.
22             // For example, you can rename the ASP.NET Identity table names and more.
23             // Add your customizations after calling base.OnModelCreating(builder);
24         }
25     }
26 }
View Code

Models->ApplicationUser 新建

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Microsoft.AspNetCore.Identity;
 6 
 7 namespace IdentityMvc.Models
 8 {
 9     // Add profile data for application users by adding properties to the ApplicationUser class
10     public class ApplicationUser : IdentityUser
11     {
12     }
13 }
View Code

appsettings.json 加入数据库连接

  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\mssqllocaldb;Database=aspnet-ids-3D54E4B2-38C1-466C-A12F-E9CCF493B11B;Trusted_Connection=True;MultipleActiveResultSets=true"
  },

最后生成编译,

生成数据库映射表

更新数据库

dotnet build
dotnet ef migrations add Initial -o Data/Migrations
dotnet ef database update
原文地址:https://www.cnblogs.com/LiuFengH/p/9411335.html