MVC4 - 为什么我的URL重写阻止我访问自定义AuthoriseAttribute中的ID

时间:2013-01-17 06:10:03

标签: .net url-rewriting asp.net-mvc-4 custom-attributes

我目前正在MVC4中编写一个授权过滤器,它有默认的URL重写

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

通过上述路线,我有一个自定义授权属性,就像这样开始

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    String Value = httpContext.Request["id"];
然而,身份证不会通过。

当我走上去的路线时,它会。

无论如何我可以在authorize属性中拥有路由和id吗?

1 个答案:

答案 0 :(得分:1)

对于对我的解决方案感兴趣的任何人,我设法从RequestContext中的RouteData获取了我需要的信息 -

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        String Value = httpContext.Request["id"];
        if(String.IsNullOrWhiteSpace(Value))
            Value = httpContext.Request.RequestContext.RouteData.Values["id"] as String;