public override void OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); // 判断Action或Controller是否存在AllowAnonymousAttribute 特性 - 匿名访问 if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)) { return; } try { IAuthClient <DesAuthUser <int>, int> authClient = new DesAuthClient <DesAuthUser <int>, int>(); DesAuthUser <int> authUser = authClient.GetBody(); if (authUser == null) { // cookie不存在 filterContext.Result = CreateUnauthorizeResult("未登录授权", filterContext); return; } CopterIdentity <DesAuthUser <int>, int> identity = new CopterIdentity <DesAuthUser <int>, int>(authUser.Name, authUser); CopterPrincipal principal = new CopterPrincipal(identity); // 验证成功 赋值 User; filterContext.HttpContext.User = principal; } catch (Exception ex) { filterContext.Result = CreateUnauthorizeResult(ex.Message, filterContext); } }
public override void OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); // 判断Action或Controller是否存在AllowAnonymousAttribute 特性 - 匿名访问 if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)) { return; } //IList<AllowAnonymousAttribute> attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AllowAnonymousAttribute), true).OfType<AllowAnonymousAttribute>().ToList(); try { IAuthClient <JwtAuthUser <int>, int> authClient = new JwtAuthClient <JwtAuthUser <int>, int>(); JwtAuthUser <int> authUser = authClient.GetBody(); if (authUser == null) { // cookie不存在 filterContext.Result = CreateUnauthorizeResult("未登录授权", filterContext); return; } CopterIdentity <JwtAuthUser <int>, int> identity = new CopterIdentity <JwtAuthUser <int>, int>(authUser.Name, authUser); CopterPrincipal principal = new CopterPrincipal(identity); // 验证成功 赋值 User; filterContext.HttpContext.User = principal; } catch (TokenExpiredException ex) // 已失效 { filterContext.Result = CreateUnauthorizeResult(ex.Message, filterContext); } catch (InvalidTokenPartsException ex) // Json Web Token 格式错误 { filterContext.Result = CreateUnauthorizeResult(ex.Message, filterContext); } catch (ArgumentException ex) // 缺少参数|参数错误 { filterContext.Result = CreateUnauthorizeResult(string.Format("参数错误:{0}", ex.Message), filterContext); } catch (SignatureVerificationException ex) // 签名验证对比不通过 { filterContext.Result = CreateUnauthorizeResult(ex.Message, filterContext); } catch (Exception ex) // 签名验证对比不通过 { filterContext.Result = CreateUnauthorizeResult(ex.Message, filterContext); } }