Ejemplo n.º 1
0
        public UserAuthAttribute(UserAuthOption userOption)
        {
            if (userOption.UserProvider == null)
            {
                throw new Exception("UserAuthOption 中 UserProvider 接口对象必须提供!");
            }

            p_Order     = -10;
            _userOption = userOption;
            p_IsWebSite = userOption.IsWebSite;
        }
Ejemplo n.º 2
0
        private static Task <Resp> CheckFunc(HttpContext context, AppIdentity appInfo, UserAuthOption opt)
        {
            var userInfo = UserContext.Identity;

            if (userInfo == null || // 非需授权认证请求
                opt.FuncProvider == null ||
                userInfo.auth_type == PortalAuthorizeType.SuperAdmin)
            {
                return(Task.FromResult(new Resp()));
            }

            return(opt.FuncProvider.CheckFuncPermission(context, userInfo, appInfo.func));
        }
Ejemplo n.º 3
0
        private static async Task <Resp> FormatUserIdentity(AuthorizationFilterContext context, AppIdentity appInfo, UserAuthOption opt)
        {
            if (context.ActionDescriptor.EndpointMetadata.Any(filter => filter is IAllowAnonymous))
            {
                return(new Resp());
            }

            if (opt.IsWebSite && string.IsNullOrEmpty(appInfo.token))
            {
                appInfo.token = context.HttpContext.Request.Cookies[CookieKeys.UserCookieName];
            }

            if (string.IsNullOrEmpty(appInfo.token))
            {
                return(new Resp().WithResp(RespTypes.UnLogin, "请先登录!"));
            }

            var identityRes = await opt.UserProvider.InitialAuthUserIdentity(context.HttpContext, appInfo);

            if (!identityRes.IsSuccess())
            {
                return(identityRes);
            }

            UserContext.SetIdentity(identityRes.data);
            return(identityRes);
        }
Ejemplo n.º 4
0
        private static async Task <Resp> FormatUserIdentity(AuthorizationFilterContext context, AppIdentity appInfo, UserAuthOption opt)
        {
            var identityRes = await opt.UserProvider.InitialIdentity(context.HttpContext, appInfo);

            if (!identityRes.IsSuccess())
            {
                return(identityRes);
            }

            UserContext.SetIdentity(identityRes.data);
            return(identityRes);
        }