【愚公系列】2022年03月 .NET架构班 013-ABP vNext 账户模块
【摘要】 一、账户模块账户模块作为Abpvnext的一个业务模块,指的就是为系统提供 登录/注册功能的模块目的:在系统中确定用户的身份; 身份代表着用户的身份证 使用身份保证系统的安全 用户不等于身份 使用身份就是用来区分不同的用户如果没有账户,对于用户无法验证,任何人都可以攻击 1.账户模块的源码下载地址:https://github.com/abpframework/abp/tree/dev/...
一、账户模块
账户模块作为Abpvnext的一个业务模块,指的就是为系统提供 登录/注册功能的模块
目的:在系统中确定用户的身份; 身份代表着用户的身份证 使用身份保证系统的安全 用户不等于身份 使用身份就是用来区分不同的用户
如果没有账户,对于用户无法验证,任何人都可以攻击
1.账户模块的源码
下载地址:
https://github.com/abpframework/abp/tree/dev/modules/account
二、集成账户模块
1.EBusiness.Application.Contracts集成账户模块
1、先在项目中通过Nuget下载
Volo.Abp.Account.Application.Contracts
2、然后在EBusinessApplicationContractsModule文件上增加
[DependsOn(
typeof(AbpAccountApplicationContractsModule)
)]
public class EBusinessApplicationContractsModule: AbpModule
{}
2.EBusiness.Application集成账户模块
1、先在项目中通过Nuget下载
Volo.Abp.Account.Application
2、然后在EBusinessApplicationModule文件上增加
[DependsOn(
typeof(AbpAccountApplicationModule)
)]
public class EBusinessApplicationContractsModule: AbpModule
{}
3.EBusiness.HttpApi集成账户模块
1、先在项目中通过Nuget下载
Volo.Abp.Account.HttpApi
2、然后在EBusinessHttpApiModule文件上增加
[DependsOn(
typeof(AbpAccountHttpApiModule)
)]
public class EBusinessApplicationContractsModule: AbpModule
{}
4.EBusiness.HttpApi.Host配置账户模块
配置服务ConfigureServices
ConfigureAuthentication(context, configuration);
private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration)
{
context.Services.AddAuthentication()
.AddJwtBearer(options =>
{
options.Authority = configuration["AuthServer:Authority"];
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = "EBusiness";
options.BackchannelHttpHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback =
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
};
});
}
OnApplicationInitialization中加上
app.UseAuthentication();
三、使用账户模块
1、先启动EBusiness.HttpApi.Host
dotnet run
2、用户注册
3.创建订单业务测试
public async Task<OrderDto> CreateAsync(CreateOrderDto input)
{
var guid = CurrentTenant.Id;
// 1、创建订单
Order order = new Order(GuidGenerator.Create());
order = ObjectMapper.Map<CreateOrderDto,Order>(input,order);
// 1、获取用户信息
// Claim[] claims = CurrentUser.GetAllClaims();
order.UserId = CurrentUser.Id.Value;
// 2、保存订单
await _OrderRepository.InsertAsync(order);
// 3、扣减商品库存
// 1、先查询商品
/*foreach (var orderItemDto in input.OrderItems)
{
Product product = await _productAbpRepository.GetAsync(orderItemDto.ProductId);
product.ProductStock = product.ProductStock - input.ProductCount;
await _productAbpRepository.UpdateAsync(product);
}
//事务的使用
await CurrentUnitOfWork.SaveChangesAsync();*/
// 3.1 发送邮件
string flag = FeatureChecker.GetOrNullAsync(EBusinessFeatures.Orders.IsEmail).Result;
if (flag.Equals("true"))
{
Console.WriteLine("发送邮件");
}
// 3.2 发送短信
string IsSmsflag = FeatureChecker.GetOrNullAsync(EBusinessFeatures.Orders.IsSms).Result;
if (IsSmsflag.Equals("true"))
{
Console.WriteLine("发送短信");
}
// 权限,特征,设置。操作一模一样。本质:都是字符串。
// 前提(场景)不一样。
// 权限:用户 功能多少
// 特征:多租户 。功能的多少。多租户功能多少
// 设置:系统配置。功能的种类(选择)。多少不变,种类改变
// 特征:默认是根据多租户来决定多少功能?
// 扩展:根据用户来决定多少功能
// _emailSender.SendAsync("网站","QQ","订单创建成功");
// 4、返回订单
return ObjectMapper.Map<Order, OrderDto>(order);
}
四、账户模块其他客户端使用
1.EBusiness.Web页面访问账户模块
1、先在项目中通过Nuget下载
Volo.Abp.Account.Web
2、然后在EBusinessApplicationModule文件上增加
[DependsOn(
typeof(AbpAccountWebModule)
)]
public class EBusinessWebModule: AbpModule
{}
2.OA系统调用账户模块
1、先在项目中通过Nuget下载
Volo.Abp.Account.HttpApi.Client
2、然后在YDT.OA文件上增加
[DependsOn(
typeof(AbpAccountHttpApiClientModule)
)]
public class OAModule: AbpModule
{}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)