token 验证
This commit is contained in:
		
							parent
							
								
									dedaf3e0a3
								
							
						
					
					
						commit
						41dde067d2
					
				| 
						 | 
					@ -13,41 +13,50 @@ namespace LY.App.MiddleWare
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
 | 
					        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 排除不需要Token验证的API
 | 
					            try
 | 
				
			||||||
            if (IsExcludedPath(context.Request.Path))
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                await next(context);
 | 
					                // 排除不需要Token验证的API
 | 
				
			||||||
                return;
 | 
					                if (IsExcludedPath(context.Request.Path))
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            // 获取Token
 | 
					 | 
				
			||||||
            var token = context.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
 | 
					 | 
				
			||||||
            if (!string.IsNullOrEmpty(token))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                // 验证Token是否有效
 | 
					 | 
				
			||||||
                var handler = new JwtSecurityTokenHandler();
 | 
					 | 
				
			||||||
                var jsonToken = handler.ReadToken(token) as JwtSecurityToken;
 | 
					 | 
				
			||||||
                if (jsonToken != null)
 | 
					 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    // 从Token中获取数据
 | 
					                    await next(context);
 | 
				
			||||||
                    var username = jsonToken.Claims.FirstOrDefault(claim => claim.Type == "sub")?.Value;
 | 
					                    return;
 | 
				
			||||||
                    if (username != null)
 | 
					                }
 | 
				
			||||||
 | 
					                // 获取Token
 | 
				
			||||||
 | 
					                var token = context.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
 | 
				
			||||||
 | 
					                if (!string.IsNullOrEmpty(token))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // 验证Token是否有效
 | 
				
			||||||
 | 
					                    var handler = new JwtSecurityTokenHandler();
 | 
				
			||||||
 | 
					                    var jsonToken = handler.ReadToken(token) as JwtSecurityToken;
 | 
				
			||||||
 | 
					                    if (jsonToken != null)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if (await _redis.ExistsAsync(RedisKeyList.TokenUser(username)))
 | 
					                        // 从Token中获取数据
 | 
				
			||||||
 | 
					                        var username = jsonToken.Claims.FirstOrDefault(claim => claim.Type == "sub")?.Value;
 | 
				
			||||||
 | 
					                        if (username != null)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            // Token和数据验证通过,继续处理请求
 | 
					                            if (await _redis.ExistsAsync(RedisKeyList.TokenUser(username)))
 | 
				
			||||||
                            await next(context);
 | 
					                            {
 | 
				
			||||||
                            return;
 | 
					                                // Token和数据验证通过,继续处理请求
 | 
				
			||||||
 | 
					                                await next(context);
 | 
				
			||||||
 | 
					                                return;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            else
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // Token不存在,返回未授权
 | 
				
			||||||
 | 
					                    context.Response.StatusCode = 401;
 | 
				
			||||||
 | 
					                    await context.Response.WriteAsync("Unauthorized: Invalid Token");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                // Token不存在,返回未授权
 | 
					 | 
				
			||||||
                context.Response.StatusCode = 401;
 | 
					                context.Response.StatusCode = 401;
 | 
				
			||||||
                await context.Response.WriteAsync("Unauthorized: Invalid Token");
 | 
					                await context.Response.WriteAsync("Unauthorized: Invalid Token");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 这是放不需要过滤的api地址
 | 
					        /// 这是放不需要过滤的api地址
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue