コード例 #1
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            bool isAnonymousUser = false;
            var  ctx             = filterContext;

            if (ctx == null)
            {
                isAnonymousUser = true;
            }
            else
            {
                XnUserPrincipal user = ctx.HttpContext.User as XnUserPrincipal;
                if (user == null || !user.Identity.IsAuthenticated)
                {
                    isAnonymousUser = true;
                }
            }
            if (isAnonymousUser)
            {
#if DEBUG
                ctx.Result = new RedirectResult("http://login.Xn.dev/member/login?returnurl=" + HttpUtility.UrlEncode(ctx.RequestContext.HttpContext.Request.Url.AbsoluteUri));
#else
                ctx.Result = new RedirectResult("https://login.Xn.cn/member/login?returnurl=" + HttpUtility.UrlEncode(ctx.RequestContext.HttpContext.Request.Url.AbsoluteUri));
#endif
            }
        }
コード例 #2
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            var ctx = filterContext;

            if (ctx == null)
            {
                throw new ArgumentNullException("filterContext");
            }

            XnUserPrincipal user = ctx.HttpContext.User as XnUserPrincipal;

            if (user == null)
            {
                throw new ArgumentException("HttpContext.User is not XnUserPrincipal.");
            }

            if (!user.Identity.IsAuthenticated)
            {
                ctx.Result = new RedirectToRouteResult(
                    new RouteValueDictionary
                {
                    { "client", filterContext.RouteData.Values["client"] },
                    { "controller", "admin" },
                    { "action", "index" },
                    { "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
                });
                return;
            }
            var isAuthorized = false;

            var controller = ctx.RouteData.Values["controller"] as string;
            var action     = ctx.RouteData.Values["action"] as string;

            isAuthorized = new RoleResourceService().IsRoleAuthorized(user.Identity.Name.AsInt(), controller, action);

            if (!isAuthorized)
            {
                UnauthorizeHandler(ctx);
            }
        }