执行过滤器鉴权

1.新建过滤器

    public class SupportFilterAttribute : ActionFilterAttribute
    {

        /// <summary>
        /// 当Action中标注了[SupportFilter]的时候会执行
        /// </summary>
        /// <param name="filterContext">请求上下文</param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Account account = AccountModel.GetCurrentAccount();
            if (account == null)
            {
                filterContext.HttpContext.Response.Write(" <script type='text/javascript'> window.top.location='/login'; </script>");
                filterContext.Result = new EmptyResult();
                return;
            }

        }
    }

2.接口添加鉴权

 [SupportFilter]
        public JsonResult GetDataDel(string id, int page, int rows, string order, string sort, string search)
        {
      //业务逻辑处理 }

---------------------------------------------------------------------------------------------------------------------

1.写类型

   [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
    public class CheckAuthAttribute : ActionFilterAttribute
    {
        private Login_Type? _Login_Type;
        public Login_Type Login_Type
        {
            get
            {
                if (_Login_Type.HasValue)
                {
                    return _Login_Type.Value;
                }
                return Login_Type.平台管理;
            }
            set
            {
                _Login_Type = value;
            }
        }
        /// <summary> 
        /// 验证权限(action执行前会先执行这里) 
        /// </summary> 
        /// <param name="filterContext"></param> 
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var user = SessionState.GetCurrentUser(); 
            ContentResult Content = new ContentResult();
            switch (user.Code)
            {
                case 0:
                    break;//alert('请先登录!');
                case -1://未登陆
                    CheckLogin(filterContext, Content, user);
                    break;
                case -2://登陆超时
                    CheckLogin(filterContext, Content, user);
                    break;
                default://未知情况
                    CheckLogin(filterContext, Content, user);
                    break;
            }
        }

        private void CheckLogin(ActionExecutingContext filterContext, ContentResult Content, SessionUsers user)
        {
            var rurl = "";
            if (user.Code != 0)
            {
                switch (Login_Type)
                {
                    case Login_Type.会员中心:
                        rurl = "/app/user/login";
                        break;
                    case Login_Type.平台管理:
                        rurl = "/admin/login";
                        break;
                }
            }
            else
            {
                switch (user.Login_Type)
                {
                    case Login_Type.会员中心:
                        rurl = "/app/user/login";
                        break;
                    case Login_Type.平台管理:
                        rurl = "/admin/login";
                        break;
                }
            }
            Content.Content = string.Format("<script type='text/javascript'>window.parent.location.href='{0}';</script>", rurl);
            filterContext.Result = Content;
        }
    }

 

2.调用

[CheckAuth(Login_Type = Login_Type.平台管理)]
  public class MemberController : Controller
    {
//业务逻辑处理
     }

------
或

[CheckAuth(Login_Type = Login_Type.平台管理)]
 public string AuditRList(String name, string realname, string Status, string Stime, string Etime, String page, String size)
        {
//业务逻辑处理
        }

 

posted on 2023-05-07 14:39  欢笑一声  阅读(29)  评论(0)    收藏  举报

导航