新做一个面向客户的站点,用户模块必不可少,要做好工作量也不少,有的聪明的小伙伴使用第三方开源框架自带的用户模块,但是了解别人做的框架也是要花时间的。如果你的网站比较小,对用户模块要求不高,那么可以用Asp.Net Core自带的Identity来生成用户模块,并使用“标识功能”创建页面注册登录等页面,下面简单介绍Asp.Net Core Identity的使用步骤。.
使用步骤
1、环境准备
新建一个asp.net core项目,用nuget安装Asp.Net Core Identity,或用命令安装
//Identity的ef包,我们这使用EF来生成
install-package Microsoft.AspNetCore.Identity.EntityFrameworkCore
//Identity的UI包
install-package Microsoft.AspNetCore.Identity.UI
// ef数据迁移工具包
install-package Microsoft.EntityFrameworkCore.Tools
//SqlServer数据库的EF支持,如果使用mysql数据库,可以换mysql的包
install-package Microsoft.EntityFrameworkCore.SqlServer
新建一个库,并在appsettings.json添加数据库链接,我们这里新建teamservice库,链接如下:
"ConnectionStrings": {
"DefaultConnection": "Data Source=.;Initial Catalog=teamservice;Persist Security Info=True;User ID=sa;Password=654321"
}
2、新建Identity上下文
新建类文件IdentityServerUserDbContext.cs并继承Identity泛型上下文“IdentityDbContext<IdentityUser>”,代码如下:
public class IdentityServerUserDbContext : IdentityDbContext<IdentityUser>
{
public IdentityServerUserDbContext(DbContextOptions<IdentityServerUserDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
3、在Startup.cs注入Identity
需要在Startup.cs中注入Identity,可以配置链接,配置用户密码复杂度等,代码如下:
//用户数据库链接配置
services.AddDbContext<IdentityServerUserDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});
//用户表配置
services.AddIdentity<IdentityUser, IdentityRole>(options => {
// 密码复杂度配置
options.Password.RequireDigit = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
options.Password.RequireLowercase = false;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = false;
})//并加入identity上下文
.AddEntityFrameworkStores<IdentityServerUserDbContext>()
.AddDefaultTokenProviders();
4、使用EF数据工具执行迁移脚本
dotnet ef migrations add IdentityServerUserDbMigration -c IdentityServerUserDbContext -o Data/Migrations/IdentityServer/IdentityServerUserDb
以上代码可以在Data/Migrations/IdentityServer/IdentityServerUserDb文件夹下生成迁移脚本。
由上图可以看出这些表很熟悉吧。
5、使用EF数据工具生成数据表
dotnet ef database update -c IdentityServerUserDbContext
我们来看看数据库是否生成上述的表:
6、生成用户增删改查登录的UI
点击项目右键,点击“添加”,再点击“新搭建基架的项目”
打开后选择“标识”,如下图
选择你需要的生成的ui文件,然后在选择“数据上下文类”,点击添加便生成你所需要的ui,如下图。
生成的文件如下:
文件中的方法都已经实现,你可以根据自己的需求来重构和添加自己的方法。这个是asp.net core自带的Razor页面,如果需要前后端分离的话就不适用了。
结语
以上介绍了Identity实现用户权限模块的实现步骤,这是微软官方自带的,大家可以自己尝试一下,如果对系统要求不高,可以采用这套快速开发。另外大家也可以搭配identityserver4权限验证中间件使用。Identity已经实现了开源,大家可以研究一下开源代码,做一套自己的自动生成模块。希望本文对大家学习和工作有一定参考价值,同时欢迎大家留言讨论,谢谢大家的支持。
源码:
https://pan.baidu.com/s/1AOtacWDWirSfNI6Nl-KEQw?pwd=zq4l
提取码:zq4l