Применить AuthorizeAttribute к классу контроллера и к действию одновременно - PullRequest
9 голосов
/ 19 августа 2011

Есть ли один способ сделать так, чтобы атрибут [Authorize] игнорировался в одном действии в классе контроллера, который имеет атрибут Authorize?

        [Authorize]
        public class MyController : Controller
        {
           [Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly,
           public ActionResult PublicMethod()
           {
           //some code
           }

           public ActionResult PrivateMethod()
           {
           //some code
           }
        }

Только для PrivateMethod () должна требоваться аутентификация, но она также обязательна.

PS: я не хотел бы делать свой собственный фильтр авторизации.

[] s

Ответы [ 4 ]

16 голосов
/ 25 апреля 2013

Вы можете использовать [AllowAnonymous]

 [Authorize]
 public class MyController : Controller
 {
     [AllowAnonymous]
     public ActionResult PublicMethod()
     {
           //some code
     }

     public ActionResult PrivateMethod()
     {
           //some code
     }
  }
4 голосов
/ 19 августа 2011

По умолчанию это невозможно - если вы установите [Authorize] для контроллера, то только аутентифицированный пользователь сможет получить доступ к действию.

или

Вы можете попробовать пользовательские решения: stackoverflow .

3 голосов
/ 20 июля 2012

Решение находится в этой статье: Защита вашего приложения ASP.NET MVC 3

В статье рассказывается о подходе белого списка, в котором вы украшаете действия с помощью AllowAnonymous Пользовательский атрибут.Для этого необходимо расширить AuthorizeAttribute и метод OnAuthorization, чтобы пропустить проверки авторизации AllowAnonymous -action.(Подход зачислен Леви, эксперту по безопасности в команде MVC.)

0 голосов
/ 18 марта 2017
    public class MyController : Controller
    {
       [Authorize] //it will only work for the following action
       public ActionResult PublicMethod()
       {
       //some code
       }

       public ActionResult PrivateMethod()  //[Authorize] will not work for this action
       {
       //some code
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...