¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Authorization; |
| | | using WIDESEA_Core.HttpContextUser; |
| | | |
| | | namespace WIDESEA_Core.Middlewares |
| | | { |
| | | /// <summary> |
| | | /// ä¸é´ä»¶ |
| | | /// åå为èªå®ä¹ææä¸é´ä»¶ |
| | | /// å
åæ£æ¥ header tokençä½¿ç¨ |
| | | /// </summary> |
| | | public class JwtTokenAuthMiddleware |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | private readonly RequestDelegate _next; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="next"></param> |
| | | public JwtTokenAuthMiddleware(RequestDelegate next) |
| | | { |
| | | _next = next; |
| | | } |
| | | |
| | | |
| | | private void PreProceed(HttpContext next) |
| | | { |
| | | //Console.WriteLine($"{DateTime.Now} middleware invoke preproceed"); |
| | | //... |
| | | } |
| | | private void PostProceed(HttpContext next) |
| | | { |
| | | //Console.WriteLine($"{DateTime.Now} middleware invoke postproceed"); |
| | | //.... |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="httpContext"></param> |
| | | /// <returns></returns> |
| | | public Task Invoke(HttpContext httpContext) |
| | | { |
| | | PreProceed(httpContext); |
| | | |
| | | |
| | | //æ£æµæ¯å¦å
å«'Authorization'请æ±å¤´ |
| | | if (!httpContext.Request.Headers.ContainsKey("Authorization")) |
| | | { |
| | | PostProceed(httpContext); |
| | | |
| | | return _next(httpContext); |
| | | } |
| | | //var tokenHeader = httpContext.Request.Headers["Authorization"].ToString(); |
| | | var tokenHeader = httpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", ""); |
| | | |
| | | try |
| | | { |
| | | if (tokenHeader.Length >= 128) |
| | | { |
| | | //Console.WriteLine($"{DateTime.Now} token :{tokenHeader}"); |
| | | UserInfo tm = JwtHelper.SerializeJwt(tokenHeader); |
| | | |
| | | //ææ |
| | | //var claimList = new List<Claim>(); |
| | | //var claim = new Claim(ClaimTypes.Role, tm.Role); |
| | | //claimList.Add(claim); |
| | | //var identity = new ClaimsIdentity(claimList); |
| | | //var principal = new ClaimsPrincipal(identity); |
| | | //httpContext.User = principal; |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Console.WriteLine($"{DateTime.Now} middleware wrong:{e.Message}"); |
| | | } |
| | | |
| | | |
| | | PostProceed(httpContext); |
| | | |
| | | |
| | | return _next(httpContext); |
| | | } |
| | | |
| | | } |
| | | } |