一、概念
账户模块的概念包括以下几个方面:
-
用户账户:账户模块提供了用户账户的管理功能,包括创建新账户、修改账户信息、激活/禁用账户等操作。
-
身份认证:账户模块负责用户身份认证的过程,包括验证用户的用户名和密码,生成和验证访问令牌,保证只有经过认证的用户可以访问受限资源。
-
用户角色和权限:账户模块允许管理员为用户分配角色和权限,以控制用户对系统资源的访问权限。例如,管理员可以将某个用户设置为管理员角色,赋予其管理其他用户账户的权限。
-
密码管理:账户模块提供了密码管理功能,包括密码重置、密码加密存储、密码强度检查等。用户可以通过密码重置功能来恢复遗忘的密码,而管理员可以要求用户定期更改密码以增强安全性。
-
社交登录集成:账户模块通常也支持社交登录集成,允许用户使用第三方平台(如Google、Facebook等)的账户进行登录。这样可以提高用户的登录便利性,减少用户注册的复杂性。
二、引入管理Nuget包
三、集成Account账户模块使用
在Module类上使用DependsOn特性集成引入模块 1、示例
[DependsOn(
//集成账户模块
typeof(AbpAccountApplicationModule), //依赖ABP的 账户模块account模板 //生成账户功能
typeof(AbpAccountHttpApiModule), //依赖ABP的 账户模块account API 模板 生成注册、重置密码...接口
typeof(AbpAccountWebModule) //依赖ABP的 账户模块account web 模板 //生成登录、退出...接口
)]
public class ABP_vNext_Shop_Module : AbpModule
{
}
2、正式使用
using Volo.Abp;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.EntityFrameworkCore;
using ABP_vNext_Shop.Context;
using Volo.Abp.EntityFrameworkCore.MySQL;
using Volo.Abp.Application;
using Volo.Abp.AutoMapper;
using Volo.Abp.Swashbuckle;
using Microsoft.OpenApi.Models;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.Identity;
using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.PermissionManagement;
using Volo.Abp.Account;
using Volo.Abp.Account.Web;
using Volo.Abp.Data;
using Microsoft.Extensions.Hosting;
namespace ABP_vNext_Shop
{
[DependsOn(
typeof(AbpAutofacModule),//依赖ABP 的IOC容器模板
typeof(AbpAspNetCoreMvcModule),//依赖ABP的 MVC模板
typeof(AbpEntityFrameworkCoreModule),//依赖ABP的 EF-Core模板
typeof(AbpEntityFrameworkCoreMySQLModule),//依赖ABP的 EF-Core-MySQL模板
typeof(AbpDddApplicationModule),//依赖ABP的 ApplicationModule模板
typeof(AbpAutoMapperModule),//依赖ABP的 AutoMapper自动映射模板
typeof(AbpSwashbuckleModule),//依赖ABP的 Swagger模板
typeof(AbpAspNetCoreSerilogModule),//依赖ABP的 Serilog日志模板
//集成用户身份模块
typeof(AbpIdentityDomainModule),//依赖ABP的 用户身份领域模型模板
typeof(AbpIdentityEntityFrameworkCoreModule), //依赖ABP的 身份模块的ef模板
typeof(AbpIdentityApplicationModule), //依赖ABP的 身份模块的Application应用层模板 实现增删改查功能
typeof(AbpIdentityHttpApiModule), //依赖ABP的 身份模块的webApi模板 实现自动生成控制器以及接口
//集成权限模块
typeof(AbpPermissionManagementEntityFrameworkCoreModule), //依赖ABP的 权限模块的ef模板
//集成账户模块
typeof(AbpAccountApplicationModule), //依赖ABP的 账户模块account模板 //生成账户功能
typeof(AbpAccountHttpApiModule), //依赖ABP的 账户模块account API 模板 生成注册、重置密码...接口
typeof(AbpAccountWebModule) //依赖ABP的 账户模块account web 模板 //生成登录、退出...接口
)]
public class ABP_vNext_Shop_Module : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddControllers();
context.Services.AddEndpointsApiExplorer();
//context.Services.AddSwaggerGen(options =>
//{
// //4.2、 配置自动生成API控制器 显示在swagger页面上
// options.DocInclusionPredicate((document, api) => true);
//});
//加载配置文件app.json内容
var config = context.Services.GetConfiguration();
//1、加载Abp_ServerContext到IOC容器
context.Services.AddAbpDbContext<Abp_ServerContext>();
//2、加载DbContext对应的数据库
//以mysql为例
Configure<AbpDbContextOptions>(options =>
{
options.UseMySQL();
});
//3、加载AutoMapper到IOC容器
context.Services.AddAutoMapperObjectMapper<Abp_ServerContext>();
//3.1、 配置AutoMapper
Configure<AbpAutoMapperOptions>(options =>
{
//对整个项目进行映射
options.AddMaps<ABP_vNext_Shop_Module>();
});
//4、配置自动API控制器生成
Configure<AbpAspNetCoreMvcOptions>(options =>
{
//4.1、开启自动API控制器 => 集成整个项目所有控制器
options.ConventionalControllers.Create(typeof(ABP_vNext_Shop_Module).Assembly, options =>
{
//自定义指定 自动生成的api路由的项目名称
options.RootPath = "ABP_vNext_Shop";
////自动api都创建,为true不过滤,为false全部过滤
////非特殊特情况,不要使用这种方式,会写死
//options.TypePredicate = type => true;
});
});
//5、配置Abp 的Swagger到IOC容器
// AddAbpSwaggerGen 不带Authorization验证锁
// AddAbpSwaggerGenWithOAuth 带Authorization验证锁
context.Services.AddAbpSwaggerGenWithOAuth(
config["AuthServer:Authority"],
new Dictionary<string, string>
{
{ "api", "ABP_vNext_Shop_Api" }
},
options =>
{
//5.1、 生成swagger文档,配置文档表头信息
options.SwaggerDoc("v1", new OpenApiInfo { Title = "ABP_vNext_Shop", Version = "v1" });
//5.2、 配置自动生成API控制器 显示在swagger页面上
options.DocInclusionPredicate((document, api) => true);
//5.3、
options.CustomSchemaIds(type => type.FullName);
});
//如果集成了权限管理(AbpPermissionManagementEntityFrameworkCoreModule),
//可以注释掉6.1 和 6.2,账户模块里面已经实现了添加身份验证功能
////6.1、添加身份验证
//context.Services.AddAuthentication().AddCookie();
////6.2、添加权限验证
//context.Services.AddAuthorization();
////6.2.1、去除所有权限
//context.Services.AddAlwaysAllowAuthorization();
////7、如果自定义了Identity用户模块数据库表的前缀,访问数据库也需要指定前缀
//AbpIdentityDbProperties.DbTablePrefix = "Sys_";
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
//获取app
var app = context.GetApplicationBuilder();
//获取环境
var env = context.GetEnvironment();
//if (env.IsDevelopment())
//{
// app.UseSwagger();
// app.UseSwaggerUI();
//}
app.UseSwagger();
//app.UseSwaggerUI();
app.UseAbpSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "api API");
});
app.UseStaticFiles();
app.UseHttpsRedirection();
//如果集成了权限管理(AbpPermissionManagementEntityFrameworkCoreModule),
//可以注释掉 app.UseAuthorization() 权限管道,账户模块里面已经实现了添加 权限管道功能
//app.UseAuthorization();
}
}
}
3、效果展示
3.1、接口展示
3.2、Account注册接口使用
3.3、结果
如图,就是ABP_vNext给封装好的Account账户模块接口
以上就是ABP_vNext集成Account账户模块的流程,有问题欢迎到评论区讨论!!!