澳门1495娱乐授权中间件的牵线,授权中间件的牵线

回到目录

再次回到目录

LindDotNetCore中间件

小叔认识中间件就是着重对http请求进行拦截,然后添加具体个性化功能的逻辑,这种把请求切开,添加新逻辑的法子相似称为面向方面的逻辑AOP!

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

    #### 授权中间件

    恳请有效性的校验

  • 授权参数

     /// <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();
 }

LindDotNetCore中间件

岳丈认识中间件就是首要对http请求举办阻挠,然后添加具体个性化效率的逻辑,这种把请求切开,添加新逻辑的法子一般称为面向方面的逻辑AOP!

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

    #### 授权中间件

    澳门1495娱乐,伸手有效性的校验

  • 授权参数

     /// <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相互调用的场地相比较有用

请求链跟踪中间件

记录请求经过的任何过程,对于多api相互调用的气象相比有用

一呼百应时间中间件

记录大于指定时间的伏乞音讯,方便做性能完全的晋级
回到目录

响应时间中间件

记录大于指定时间的呼吁音信,方便做性能完全的升高
重临目录

相关文章