Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }