欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

ASP.NET Core的JWT的实现(中间件).md

最编程 2024-01-13 18:03:41
...
  • publicJwtCustomerAuthorizeMiddleware(RequestDelegate next, IOptions<JsonWebTokenSetting> options, IJsonWebTokenValidate jsonWebTokenValidate, Func<Dictionary<string, string>, JsonWebTokenSetting, bool> validatePayLoad, List<string> anonymousPathList) 
  • this._next = next; 
  • this._setting = options.Value; 
  • this._jsonWebTokenValidate = jsonWebTokenValidate; 
  • this._validatePayLoad = validatePayLoad; 
  • this._anonymousPathList = anonymousPathList; 
  •  
  • publicasync Task Invoke(HttpContext context) 
  • //JsonWebTokenValidate 
  • //若是路径可以匿名访问,直接跳过 
  • if (_anonymousPathList.Contains(context.Request.Path.Value)) 
  • //还未验证 
  • await _next(context); 
  • return
  • var result = context.Request.Headers.TryGetValue("Authorization", out StringValues authStr); 
  • if (!result || string.IsNullOrEmpty(authStr.ToString())) 
  • thrownew UnauthorizedAccessException("未授权,请传递Header头的Authorization参数。"); 
  •  
  • //进行验证与自定义验证 
  • result = _jsonWebTokenValidate.Validate(authStr.ToString().Substring("Bearer ".Length).Trim() 
  • , _setting, _validatePayLoad); 
  • if (!result) 
  • thrownew UnauthorizedAccessException("验证失败,请查看传递的参数是否正确或是否有权限访问该地址。"); 
  •  
  • await _next(context);