只若初见

.net mvc 过滤器介绍

电脑版发表于:2020/5/7 20:04

过滤器是一种面向切面的变成方式,可以统一的做一些操作,不会影响到原先的逻辑,会让两种逻辑的耦合度非常低。

类似HttpModule(mvc原理里边也用了不少的HttpModule)

 

解决统一验证是否登录

1:全局应用程序类:

2baseWebformbaseController

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");
        }
    }
}

 




关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢