2 mdq11111 mdq11111 于 2016.04.27 15:48 提问

asp.net MVC 中的过滤器 ,一个路径设置对应一个过滤器类的对象吗

asp.net MVC 中的过滤器 ,一个路径设置对应一个过滤器类的对象吗 。还是多个路由对应一个过滤器对象。有没有大神给讲解下路由和过滤器的对应关系
代码如下:
控制器代码:
[CustAuthorize("list")]
[Route("list")]
public ActionResult List()
{
return View();
}

    [CustAuthorize("admin")]
    [Route("list")]
    public ActionResult Admin()
    {
        return View();
    }

过滤器代码:
public class CustAuthorizeAttribute :AuthorizeAttribute
{
private string[] roles;

    public CustAuthorizeAttribute(params String[] role)
    {
        //roles = new string[] { "admin", "list" };
        roles = role;
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        String role = httpContext.Request.QueryString["role"];
        if (role != null)
        {
            return roles.Contains(role);
        }
        return base.AuthorizeCore(httpContext);
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
         UrlHelper url = new UrlHelper(filterContext.RequestContext);
         filterContext.Result = new RedirectResult("/Login");
    }
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.27 16:42

控制器类、单个方法、全局都可以设置过滤器,而且可以设置多个过滤器。

caozhy
caozhy 回复强迫症患者m: 只对本方法有效。过滤器是在请求发送的时候创建的。
大约 2 年之前 回复
mdq11111
mdq11111 比如一个单个方法上有这个[CustAuthorize("admin")] 是对他单独拥有一个过滤器对象还是一个项目中只有一个过滤器对象,其他方法共用一个
大约 2 年之前 回复
itcast_jwz_310
itcast_jwz_310   2016.06.28 09:51

mvc 有个通道网上有它的事件 在global中有它的第一个事件 Application_Start 在这里有

AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);//切面 你可以导航到这个方法在这里面添加一些切面也就是过滤器,代码依次执行
RouteConfig.RegisterRoutes(RouteTable.Routes);//路由 路由你可以自己设置 也可以用微软提供的默认路由
BundleConfig.RegisterBundles(BundleTable.Bundles);

                    路由

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",//控制器/方法/参数
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }//默认Home 控制器  Index 方法 后面id 是所带参数你也可以自己设置路由
        );
                    routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Login", action = "LoginIn", id = UrlParameter.Optional }  自己设的默认的
        );
    }
}

    所有的路由信息还有偶过滤器都在App_Start 中 可以多看下  在FilterConfig 里面你可以自己加自己所需要的切面执行的时候先走切面再走路由
CSDNXIAON
CSDNXIAON   2016.04.27 15:52

【转载】ASP.NET MVC的过滤器【Filters】
分享一个学习ASP.NET MVC 3的地址。
ASP.NET MVC的过滤器
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Springboot中使用过滤器映射访问路径
Springboot中使用过滤器映射访问路径,并对请求地址进行重定向。
包含过滤器的一个简单登陆实例
几乎每个系统都需要过滤器或者类似功能的工具来提升系统的安全性,这个实例能够完成过滤器最基本的入门。
JAVA乱码过滤器的JAR包
过滤中文字符,免出现乱码FILTER的JAR包,只要将其导入项目中便可使用
jsp servlet过滤器,登陆验证 获取session
一个超帅的jsp过滤器 ,对登录进行验证
Spring 各种过滤器配置大全
FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring Ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 定义url比较前先转为小写 PATTERN_TYPE_APACHE_ANT 定义使用Apache ant的匹配模式
j2ee过滤器Filter使用详解(实例)
j2ee过滤器Filter使用详解(实例)
一个简单的Filterdemo
我们要实现一个过滤器,这个过滤器能够过滤我们指定的资源路径,然后做出相应的操作。 在这个demo中,主要介绍如何在过程中创建一个过滤器以及过滤器在过滤一个资源时的生命周期是怎样的。
基于管道风格简单程序
一个简单的管道风格小程序,输入一文件路路径,建立多个过滤器,对输入的路径进行处理,最后把文件的内容输出到另一个文件中。 实现过程:建立一个类叫:Pipe, 和Fitler, 分别是表示管道和过滤器基类.建立两个两个过虑器,一个是把输入的路径记录到一个文件中,另一个过滤器负责读取文件的内容,在实现的过程中可以加入其他的过滤器. 建立request类,response类表示过滤器的请求输入和过滤器的响应.
过滤器图形符号(标准图形)
设计师需要使用的图形符号,很有用的。纯电子技术开发没有用的,综合其它技术的,有可能用得上。
Filter过滤器的代码及其web.xml配置代码
Filter过滤器的代码及其web.xml配置代码 很好的解决网页乱码问题,很方便,只要按照名字添加就可以了