Исключить некоторые действия с авторизации в ASP.net MVC
Атрибут authorize поверх моего contoller означает, что он содержит все мои действия.
Я хочу исключить некоторые действия из этого атрибута (эти действия будут доступны анонимным пользователям). Возможно ли это?
[Authorize]
public class TestController : Controller
{
public ActionResult Index()
{
...
}
...
//available by anonymous
public ActionResult Test()
{
...
}
}
Ответы
Ответ 1
Вы можете использовать подход, описанный в этом сообщении в блоге о создании атрибута AllowAnonymous и помещая этот атрибут в действия, которые вы хотите исключить:
http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx
Это будет в vNext рамки, кстати.
Ответ 2
Помещение атрибута [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...
}
}
Ответ 3
Вы можете поместить атрибут поверх ограниченных действий и оставить остальных (те, в которых вы хотите разрешить анонимный доступ).
Также выньте его из верхней части класса.