记录一下,容易忘记。
//登录验证过滤器
public class LoginAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
//如果action上有 AllowAnonymous 特性就过滤,不验证
if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
{
return;
}
HttpSessionStateBase session = filterContext.HttpContext.Session; //获取Session
if (session["users"] == null)
{
filterContext.Result = new RedirectResult("~/Admin/Home/Login"); //没登录就跳转登录
}
}
}
标识在control类上或者action动作方法 [LoginAuthorize]
action上标识 **[AllowAnonymous]**代表不进行验证过滤
//异常处理过滤器
public class AdminExceptionAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
//1.获取捕获的异常信息
Exception exception = filterContext.Exception;
//2.记录错误 log4net /数据库
filterContext.ExceptionHandled = true;//设置异常是否已经处理
//页面重定向
filterContext.Result = new RedirectResult("~/error.html");
}
}
标识在Control或者action上。标识了遇到异常都会进这个过滤器OnException方法