Исключить некоторые действия с авторизации в ASP.net MVC

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

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

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

Ответ 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

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

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