【问题标题】:Override controller Authorize attribute for viewresult为 viewresult 覆盖控制器 Authorize 属性
【发布时间】:2015-03-10 20:56:33
【问题描述】:

如果授权属性已应用于控制器,是否可以允许未经授权访问该控制器内的操作/视图结果? 例如,我不希望在 Test2 上发生授权:

[Authorize]
public class TestController : Controller
{

    public ViewResult Test()
    {
        return View();
    }

    public ViewResult Test2()
    {
        return View();
    }
}

提前致谢。

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    不,这是不可能的。您必须将 Authorize 属性应用于测试操作而不是控制器。另一种可能性是将Test2 操作放在另一个没有使用此属性修饰的控制器上。

    【讨论】:

    • 然后是新控制器。谢谢达林
    • 您也可以创建一个 AuthorizeAnonymous 属性并与 Authorize Controller 一起使用
    【解决方案2】:

    回到 MVC 3 似乎确实不可能这样做(如 Darin Dimitrov 所述),但如果任何使用 MVC 4(及更高版本)的人遇到这个问题,他\她应该能够使用 AllowAnonymous 过滤器来达到结果。所以代码会变成:

    [Authorize]
    public class TestController : Controller
    {
    
        public ViewResult Test()
        {
            return View();
        }
    
        [AllowAnonymous]
        public ViewResult Test2()
        {
            return View();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2021-11-24
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多