博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LindDotNetCore~授权中间件的介绍
阅读量:6609 次
发布时间:2019-06-24

本文共 2613 字,大约阅读时间需要 8 分钟。

LindDotNetCore中间件

大叔认识中间件就是主要对http请求进行拦截,然后添加具体个性化功能的逻辑,这种把请求切开,添加新逻辑的方式一般称为面向方面的逻辑AOP!

  1. 授权中间件
  2. 请求链跟踪中间件
  3. 响应时间中间件

授权中间件

请求有效性的校验

  • 授权参数
///  /// 授权配置 ///  public class AuthorizationConfig {     ///      /// 统一密钥     ///      public string EncryptKey { get; set; }     ///      /// 过期时间秒数     ///      public int ExpiredSecond { get; set; }     ///      /// 被授权的app     ///      public string[] AppList { get; set; } }
  • 客户端请求参数
///  /// 从http请求发过来的授权实体 ///  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); }
  • 为开发人员提供友好的扩展方法,用来注册中间件
///  /// 注册授权服务-step1 ///  /// The 
for adding services. /// A delegate to configure the
. ///
public static IServiceCollection AddLindAuthrization(this IServiceCollection services, Action
configureOptions = null) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var options = new AuthorizationConfig(); configureOptions?.Invoke(options); ObjectMapper.MapperTo(options, ConfigFileHelper.Get
()); services.AddSingleton(options); return services; } ///
/// 使用授权中间件-step2 /// ///
///
///
public static IApplicationBuilder UseLindAuthrization(this IApplicationBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } var options = builder.ApplicationServices.GetService
(); return builder.UseMiddleware
(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相互调用的场景比较有用

响应时间中间件

记录大于指定时间的请求信息,方便做性能整体的提升

转载地址:http://csiso.baihongyu.com/

你可能感兴趣的文章
www改变GUITexture的贴图
查看>>
Android 类似launcher左右滑动(实例二)
查看>>
【相机篇】从到FlyCapture2到Spinnaker
查看>>
[Leetcode]35. Search Insert Position
查看>>
sicily 1020 Big Integer
查看>>
原生ajax 请求
查看>>
关闭当前的子窗口,刷新父窗口,弹出层提示框
查看>>
Background agent
查看>>
buntu下连接远程Windows服务器
查看>>
注册、订单流程图
查看>>
js随机生成验证码及其颜色
查看>>
将某个目录下的 文件(字符窜) 只将数字过滤出来
查看>>
机器学习之常见机器学习算法---面试之常见机器学习算法简单思想梳理
查看>>
C# 委托和泛型
查看>>
Beginning Silverlight 4 in C#-数据绑定和Silverlight List控件
查看>>
springmvc 404 视图解析器配置错误
查看>>
WinForm窗体更新程序
查看>>
DDD-EF-数据仓储
查看>>
Mysql中的SQL优化总结
查看>>
Git 基础 —— 常见使用场景
查看>>