QSMP.Web/Filters/AuthorizeCheckedJsonAttribute.cs

(完整代码) 1KB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Text;
using QSMP.Logic.Sys;
using QSMP.Utility.Operator;

namespace QSMP.Web.Filters
{
    public class AuthorizeCheckedJsonAttribute: AuthorizeAttribute
    {
        /// <summary>
        /// 是否忽略权限检查。
        /// </summary>
        public bool Ignore { get; set; }

        public AuthorizeCheckedJsonAttribute(bool ignore = false)
        {
            this.Ignore = ignore;
        }

        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            SysPermissionLogic logic = new SysPermissionLogic();
            if (Ignore)
            {
                return;
            };

            string userId = null;
            try
            {
                userId = OperatorProvider.Instance.Current.UserId;
            }
            catch (Exception ex)
            {
                StringBuilder script = new StringBuilder();
                //script.Append("<script>alert('对不起,Session已过期,请重新登录');</script>");
                script.Append("<script>top.location.href = '/Account/ExceedReLogin'</script>");
                filterContext.Result = new ContentResult() { Content = script.ToString() };
                return;
            }
            var action = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString();
            bool hasPermission = logic.ActionValidate(userId, action);
            if (!hasPermission)
            {
                StringBuilder script = new StringBuilder();
                script.Append("{\"state\":2,\"message\":\"对不起,您没有权限访问当前页面\",\"data\":null}");
                filterContext.Result = new ContentResult() { Content = script.ToString() };
            }
        }


    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。