LindDotNetCore~授权中间件的介绍
2018-01-09 22:40
197 查看
回到目录
授权中间件
请求链跟踪中间件
响应时间中间件
授权参数
客户端请求参数
请求拦截器,处理请求有效性,对app,过期时间,加密方式进行校验
为开发人员提供友好的扩展方法,用来注册中间件
使用授权中间件Startup中注册
回到目录
LindDotNetCore中间件
大叔认识中间件就是主要对http请求进行拦截,然后添加具体个性化功能的逻辑,这种把请求切开,添加新逻辑的方式一般称为面向方面的逻辑AOP!授权中间件
请求链跟踪中间件
响应时间中间件
授权中间件
请求有效性的校验授权参数
/// <summary> /// 授权配置 /// </summary> public class AuthorizationConfig { /// <summary> /// 统一密钥 /// </summary> public string EncryptKey { get; set; } /// <summary> /// 过期时间秒数 /// </summary> public int ExpiredSecond { get; set; } /// <summary> /// 被授权的app /// </summary> public string[] AppList { get; set; } }
客户端请求参数
/// <summary> /// 从http请求发过来的授权实体 /// </summary> public class AuthorizationRequestInfo { public string ApplicationId { get; set; } public string Timestamp { get; set; } public string Sinature { get; set; } }
请求拦截器,处理请求有效性,对app,过期时间,加密方式进行校验
string computeSinature = MD5($"{requestInfo.ApplicationId}-{requestInfo.Timestamp}-{_options.EncryptKey}"); double tmpTimestamp; if (computeSinature.Equals(requestInfo.Sinature) && double.TryParse(requestInfo.Timestamp, out tmpTimestamp)) { if (ValidateExpired(tmpTimestamp, _options.ExpiredSecond)) { await ReturnTimeOut(context); } else { await ValidateApp(context, requestInfo.ApplicationId); } } else { await ReturnNotAuthorized(context); }
为开发人员提供友好的扩展方法,用来注册中间件
/// <summary> /// 注册授权服务-step1 /// </summary> /// <param name="services">The <see cref="IServiceCollection"/> for adding services.</param> /// <param name="configureOptions">A delegate to configure the <see cref="ResponseCompressionOptions"/>.</param> /// <returns></returns> public static IServiceCollection AddLindAuthrization(this IServiceCollection services, Action<AuthorizationConfig> configureOptions = null) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var options = new AuthorizationConfig(); configureOptions?.Invoke(options); ObjectMapper.MapperTo(options, ConfigFileHelper.Get<AuthorizationConfig>()); services.AddSingleton(options); return services; } /// <summary> /// 使用授权中间件-step2 /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static IApplicationBuilder UseLindAuthrization(this IApplicationBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var options = builder.ApplicationServices.GetService<AuthorizationConfig>(); return builder.UseMiddleware<AuthorizationMiddleware>(options); }
使用授权中间件Startup中注册
// 注册服务 services.AddLindAuthrization(options => { options.EncryptKey = "abc123"; options.ExpiredSecond = 50; options.AppList = new string[] { "1", "2", "3" }; }); // 注册中间件 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseLindAuthrization(); app.UseMvc(); }
请求链跟踪中间件
记录请求经过的整个过程,对于多api相互调用的场景比较有用响应时间中间件
记录大于指定时间的请求信息,方便做性能整体的提升回到目录
相关文章推荐
- LindDotNetCore~Scheduling任务调度模块的介绍
- LindDotNetCore~基于模块化注入的介绍
- LindDotNetCore~Aspect面向方面编程
- DotNetCore跨平台~为Lind.DotNetCore框架添加单元测试的意义
- LindDotNetCore~Mock对实际应用中的意义
- LindDotNetCore~Ocelot实现微服务网关
- LindDotNetCore~添加路由前缀
- LindDotNetCore~入门基础
- LindDotNetCore~ISoftDelete软删除接口
- LindDotNetCore~职责链模式的应用
- LindDotNetCore~Polly组件对微服务场景的价值
- LindDotNetCore~docker里图像上生成中文乱码问题
- 【ASP.NET Core快速入门】(七)WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
- #研发中间件介绍#定时任务调度与管理JobCenter
- shiro 授权介绍
- DotNetCore跨平台~功能测试TestHost的使用
- dotConnect for SQLite驱动控件介绍及下载
- 微信公众号之订阅号(已认证)实现oauth2授权登录详细步骤介绍
- doT.js详细介绍