.net mvc 过滤器介绍
电脑版发表于:2020/5/7 20:04
过滤器是一种面向切面的变成方式,可以统一的做一些操作,不会影响到原先的逻辑,会让两种逻辑的耦合度非常低。
类似HttpModule(mvc原理里边也用了不少的HttpModule)
解决统一验证是否登录
1:全局应用程序类:
2:baseWebform,baseController
3: HttpModule
创建一个简单的过滤器
过滤器其实就是一个普通的类,但是要必须要实现相应的接口或者继承类
用过滤器的步骤:
1:创建过滤器
2:注册过滤器
过滤器的作用范围:全局,局部
过滤器的作用范围:
全局:
在FilterConfig中注册的就是全局过滤
一个简单验证是否登录的过滤器
public class LoginFilter : IActionFilter
{
/// <summary>
/// action执行之后执行
/// </summary>
/// <param name="filterContext"></param>
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
/// <summary>
/// action执行之前执行
/// </summary>
/// <param name="filterContext"></param>
public void OnActionExecuting(ActionExecutingContext filterContext)
{
//如果是登录本身就放开这个验证
//获取控制器的名字(固定写法)
string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
if (controllerName.ToLower() == "login")
return;
//验证是否登录的逻辑
if (filterContext.HttpContext.Session["username"] == null)
{
//没有登录就跳转到登录
//return RedirectToAction("index", "login");
//跳转(固定写法)
filterContext.Result = new RedirectResult("/login/index");
}
}
}
