Исключить некоторые действия из Авторизации в ASP.net MVC - PullRequest
11 голосов
/ 14 июля 2011

В верхней части моего контроллера есть атрибут авторизации, который означает, что он содержит все мои действия.Я хочу исключить некоторые действия из этого атрибута (эти действия будут доступны анонимным пользователям).Возможно ли это?

[Authorize]
public class TestController : Controller
{
   public ActionResult Index()
   {
     ...
   }
   ...

   //available by anonymous
   public ActionResult Test()
   {
     ...
   }
}

Ответы [ 3 ]

11 голосов
/ 14 июля 2011

Вы можете воспользоваться подходом, описанным в этом сообщении в блоге, для создания атрибута AllowAnonymous и помещения этого атрибута в действия, которые вы хотите исключить:

http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx

Кстати, это будет в следующих рамках.

9 голосов
/ 14 июля 2011

Размещение атрибута [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...
    }
}
4 голосов
/ 14 июля 2011

Возможно, вы захотите поместить атрибут поверх запрещенных действий и оставить остальные (те, в которых вы хотите разрешить анонимный доступ) в покое.

Также выведите его из верхней части класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...