执行过滤器鉴权
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) { //业务逻辑处理 }
浙公网安备 33010602011771号