| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | using Microsoft.AspNetCore.Mvc.Filters;using System.IdentityModel.Tokens.Jwt;namespace OASystem.API{    public class OASystemAuthentication : AuthorizeAttribute    {        public void OnAuthorization(AuthorizationFilterContext context)        {            string id = context.HttpContext.User.FindFirst("id")?.Value;            if (string.IsNullOrEmpty(id))            {                context.Result = new StatusCodeResult(401); //返回鉴权失败                return;            }            Console.WriteLine("我是Authorization过滤器");            // 请求的地址            //var url = context.HttpContext.Request.Path.Value;            // 请求头信息            var heads = context.HttpContext.Request.Headers;            string token = heads["Authorization"];            token = token.Replace("Bearer ", "");//去掉 "Bearer "才是真正的token            if (string.IsNullOrEmpty(token))            {                Console.WriteLine("校验不通过");                return;            }            //redis校验这个token的有效性,确定来源是sso和确定会话没过期            //解析员工userNumber            var jwtHandler = new JwtSecurityTokenHandler();            JwtSecurityToken securityToken = jwtHandler.ReadJwtToken(token);            //DateTime expDt = (securityToken.Payload[JwtRegisteredClaimNames.c] ?? 0).GetInt().GetTimeSpmpToDate();            //if (!_cacheService.StringGet<bool>($"token:{token}"))            //{            //    Console.WriteLine($"token无效,token:{token}");            //    context.Result = new StatusCodeResult(401); //返回鉴权失败            //    return;            //}        }    }}
 |