使用Asp.Net Core Identity六步实现用户权限模块实现

新做一个面向客户的站点,用户模块必不可少,要做好工作量也不少,有的聪明的小伙伴使用第三方开源框架自带的用户模块,但是了解别人做的框架也是要花时间的。如果你的网站比较小,对用户模块要求不高,那么可以用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文件夹下生成迁移脚本。

使用Asp.Net Core Identity六步实现用户权限模块实现

由上图可以看出这些表很熟悉吧。

5、使用EF数据工具生成数据表

dotnet ef database update -c IdentityServerUserDbContext

我们来看看数据库是否生成上述的表:

使用Asp.Net Core Identity六步实现用户权限模块实现

6、生成用户增删改查登录的UI

点击项目右键,点击“添加”,再点击“新搭建基架的项目”

使用Asp.Net Core Identity六步实现用户权限模块实现

打开后选择“标识”,如下图

使用Asp.Net Core Identity六步实现用户权限模块实现

选择你需要的生成的ui文件,然后在选择“数据上下文类”,点击添加便生成你所需要的ui,如下图。

使用Asp.Net Core Identity六步实现用户权限模块实现

生成的文件如下:

使用Asp.Net Core Identity六步实现用户权限模块实现

文件中的方法都已经实现,你可以根据自己的需求来重构和添加自己的方法。这个是asp.net core自带的Razor页面,如果需要前后端分离的话就不适用了。

结语

以上介绍了Identity实现用户权限模块的实现步骤,这是微软官方自带的,大家可以自己尝试一下,如果对系统要求不高,可以采用这套快速开发。另外大家也可以搭配identityserver4权限验证中间件使用。Identity已经实现了开源,大家可以研究一下开源代码,做一套自己的自动生成模块。希望本文对大家学习和工作有一定参考价值,同时欢迎大家留言讨论,谢谢大家的支持。

源码:

https://pan.baidu.com/s/1AOtacWDWirSfNI6Nl-KEQw?pwd=zq4l

提取码:zq4l