环境准备:
1、VS 2022 免费社区版
开工: 先实现 EF Core + MySQL + Identity
创建新项目 -> ASP.NET Core Web 应用 (MVC)
可以先不勾选Docker,后面再加,但是要用Identity 就需要勾上 配置HTTPS , 并选择身份验证类型为: 个人账户
默认情况下,是连接的本地SQLite数据库;
通过NuGet 安装 Pomelo.EntityFrameworkCore.MySql
修改 appsettings.json中 DefaultConnection 字符串,指向 Azure MySql
{ "ConnectionStrings": { "DefaultConnection": "Server=xxxxxdb.mysql.database.chinacloudapi.cn; Port=3306; Database={your_database}; Uid=dbadmin@xxxxxdb; Pwd={your_password}; SslMode=Preferred;" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
修改 Program.cs中 builder.Services.AddDbContext ,如下红色字部分:
builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(connectionString, new MySqlServerVersion(new Version(5, 7, 19)))); builder.Services.AddDatabaseDeveloperPageExceptionFilter();
//注:在此由于考虑后期需要 修改或者扩展 Identity默认的页面及用户类,建议是开始业务代码前 先直接导入Identity基架,选择新增 Context 和 User 类;
把原先的 ApllicationDbContext作为以后应用的业务用DBContext;
修改Program.cs 把新增加的IDContext 也使用 DefaultConnection字符串:
把原先 DefaultIdentity 相关的用户类和Context 全部转换为新的Context和用户类:
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(connectionString, new MySqlServerVersion(new Version(5, 7, 19)))); builder.Services.AddDbContext<IDContext>(options => options.UseMySql(connectionString, new MySqlServerVersion(new Version(5, 7, 19)))); builder.Services.AddDatabaseDeveloperPageExceptionFilter(); builder.Services.AddDefaultIdentity<POSystemUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<IDContext>(); builder.Services.AddControllersWithViews();
@using Microsoft.AspNetCore.Identity @using POSystem.Areas.Identity.Data @inject SignInManager<POSystemUser> SignInManager @inject UserManager<POSystemUser> UserManager
_LoginPartial.cshtml中原Identity的用户类也需要进行调整;
准备开始数据库迁移,先进行一次编译,按F6 进行编译;
删除原先的 Migrations 目录:
再用MySQL Workbench客户端先连上Azure MySql 数据库看是空了,没有一个表:
最后通过 程序包管理器控制台 来生成数据库迁移 及 执行数据库迁移: (迁移过程中,由于多个Context,需要指定Context)
再通过MySQL Workbench客户端刷新后看看:
至此,Identity默认格式的 role 、user 等基础表就创建好了;
跑起来看一下:
点右上角Register 按钮: 输入email和两次密码:
进入Confirm页面,点击 Click here to confirm your account:
email确认页面,这个页面是个壳子,以后根据需要可以完善,用户注册后,需要通过邮箱里收到的号码进行确认:
以上结束后,点右上角Login,试着 登录看一下:
完美,爱死 Identity了,一句代码不写,一个基本应用的用户注册就搭好了:
用MySQL客户端看下数据库User表: