Spiga

2024年5月的文章归档

ABP成长系列5:认证授权

2024-05-11 20:44:04

摘要:ABP框架并不重新发明轮子去实现认证,而是完美集成并简化了上述ASP.NET Core的认证流程。 模块化封装:当你使用ABP的启动模板时,认证的配置通常已经在模块中预先配置好,你只需要在appsettings.json中提供必要的参数(如JWT的签发者、密钥等)。 依赖注入集成:ABP通过ICurrentUser提供了对当前登录用户ID (UserId) 和租户ID (TenantId) 的便捷访问。这个接口的背后实现正是基于HttpContext.User及其声明(Claims)。 多租户支持:ABP的认证系统天然支持多租户,可以正确处理不同租户下的用户登录和会话管理。 ABP的主要价值在于整合与简化,它让你在使用强大的ASP.NET Core认证机制的同时,享受到ABP模块化和约定优先开发模式带来的便捷。 要学习好ABP的认证授权模块,我们来看一下ASP.NET Core的认证授权。 一、ASP.NET Core认证授权 1. 基本流程 UseAuthentication + AddAuthentication UseAuthorization + AddAuthorization(.net源码内置) [Authorize] [AllowAnonymous] 未登陆—访问—登陆—访问—退出 2. 理解认证 认证就是鉴别是张三----解读请求携带的用户信息 信息位置:怎么传递的凭证?Cookie,JWT,Other 信息格式:凭证是什么格式,加密问题 信息有效性:token过期了、签名不对 认证后信息保存:保存到context.User里面 特殊情况处理:没登陆、没权限、没xxx,这些就是认证需要知道的,需要干的活儿 登陆是怎么配合的?HttpContext.SignInAsync完成用户信息的写入(如:Cookie) 3. 理解授权 授权:就是检测下用户到底有没有权限访问某个方法 认证和授权的关系? 没有直接关系,认证获取用户信息保存到context.User,授权去使用 授权的时候,会用Scheme去认证一下,还有异常处理 检测凭据: 标记特性[Authorize] [AllowAnonymous]—就做授权检测 ASP.NET Core提供了灵活且强大的授权策略模型,主要包括: 基于角色的授权 ([Authorize(Roles =…… 阅读全文

ABP成长系列4:DI

2024-05-04 21:43:26

摘要:前面重点介绍了ABP.vNext的模块化,以及模块化带来的核心价值动态API,今天我们开看一下ABP DI的扩展。 一、ABP DI功能介绍 1. 组件自动注册 SkipAutoServiceRegistration AddAssemblyOf AddAssembly public class BlogModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { SkipAutoServiceRegistration = true; } public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAssemblyOfBlogModule(); } } 2. 默认的注册 模块类注册为singleton MVC控制器(继承Controller或AbpController)被注册为transient MVC页面模型(继承PageModel或AbpPageModel)被注册为transient MVC视图组件(继承ViewComponent或AbpViewComponent)被注册为transient 应用程序服务(实现IApplicationService接口或继承ApplicationService类)注册为transient 存储库(实现IRepository接口)注册为transient 域服务(实现IDomainService接口)注册为transient 3. 依赖接口 ITransientDependency 注册为transient生命周期 ISingletonDependency 注册为singleton生命周期 IScopedDependency 注册为scoped生命周期 4. 特性 DependencyAttribute:控制服务的注册行为和生命周期 ExposeServicesAttribute:控制服务以哪些类型注册到容器中 [ExposeServices(typeof(…… 阅读全文