我的控制器顶部有一个authorize属性,表示它包含我的所有操作。 我想从此属性中排除某些操作(匿名用户可以使用这些操作)。有可能吗?
[Authorize]
public class TestController : Controller
{
public ActionResult Index()
{
...
}
...
//available by anonymous
public ActionResult Test()
{
...
}
}
答案 0 :(得分:11)
您可以采用本博客文章中概述的方法创建AllowAnonymous属性,并将此属性放在您要排除的操作上:
http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx
顺便提一下,这将是框架的vNext。
答案 1 :(得分:9)
将[Authorize]
属性放在控制器上基本上是将其放在每个操作上的快捷方式,因此您的代码在逻辑上等同于
// No [Authorize] here
public class TestController : Controller
{
[Authorize]
public ActionResult Index()
{
// code here...
}
[Authorize]
public ActionResult Test()
{
// code here...
}
}
您可能会看到我要去的地方 - 从控制器中删除该属性,并将其置于您想要限制的特定操作上:
// No [Authorize] here
public class TestController : Controller
{
[Authorize]
public ActionResult Index()
{
// code here...
}
// no [Authorize] here either, so anonymous users can access it...
public ActionResult Test()
{
// code here...
}
}
答案 2 :(得分:4)
您可能希望将该属性置于受限操作之上,并将其他操作(您要允许匿名访问的操作)留在其中。
同样把它从课堂上拉下来。