mvc 过滤器
1.mvc 過濾器分為 授權-行為-異常
2.授權,自定義授權。先走OnAuthorization,然后內部調用AuthorizeCore方法,如果返回true 就跳轉指定的路徑,如果返回false 就內部跳轉到授權異常HandleUnauthorizedRequest方法。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc;namespace 過濾器.Filter {public class MYAuthorization : AuthorizeAttribute {public override void OnAuthorization(AuthorizationContext filterContext) {base.OnAuthorization(filterContext);}protected override bool AuthorizeCore(HttpContextBase httpContext) {var v=CookieHelper.GetCookie("aa");if (v == "") {return false;}else {return true;}}protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {//filterContext.Result = new JsonResult() { Data = new { AuthorizeMessage = "您需要登陸"}, JsonRequestBehavior = JsonRequestBehavior.AllowGet };filterContext.Result = new RedirectResult("/Login/Index?ReturnUrl=" + filterContext.HttpContext.Request.Url.ToString().Replace(filterContext.HttpContext.Request.Url.Port.ToString(), string.Empty));}protected override HttpValidationStatus OnCacheAuthorization(HttpContextBase httpContext) {string l = "sss";return HttpValidationStatus.Invalid;}} }3.異常篩選器
? 只要是有報錯就會走這個方法,并且會跳轉到指定的頁面
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc;namespace 過濾器.Filter {public class MYHandleErrorAttribute : HandleErrorAttribute {public override void OnException(ExceptionContext filterContext) {if (!filterContext.ExceptionHandled) {filterContext.ExceptionHandled = true;filterContext.Result = new ViewResult() { ViewName = "/Views/Shared/MyError.cshtml" };}}} }4.行為過濾器
MYActionFilter?
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace 過濾器.Filter {public class MYActionFilter : ActionFilterAttribute {public override void OnActionExecuted(ActionExecutedContext filterContext) {}public override void OnActionExecuting(ActionExecutingContext filterContext) {}public override void OnResultExecuted(ResultExecutedContext filterContext) {}public override void OnResultExecuting(ResultExecutingContext filterContext) {}} }?
轉載于:https://www.cnblogs.com/elsons/p/9759922.html
總結
- 上一篇: .Net Core中利用TPL(任务并行
- 下一篇: hadoop大数据平台架构之DKhado