• 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
  • 相关阅读:
    CodeForces 1059B
    CodeForces 714A
    浅析母函数
    CodeForces 816C 思维
    CodeForces 816B 前缀和
    CodeForces
    Java项目读取resources资源文件路径那点事
    原型模式
    一次给女朋友转账引发我对分布式事务的思考
    连续最大字段和问题
  • 原文地址:https://www.cnblogs.com/LiuFengH/p/9411335.html
Copyright © 2020-2023  润新知