Авторизация ASP.NET MVC

166
17

Я хочу, чтобы роли по умолчанию для моего класса контроллера были "Администраторы, редакторы содержимого"


[Authorize(Roles = "Administrators, Content Editor")]

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


Примечание. Я знаю, что я мог бы украсить каждое действие другого действия с помощью атрибута authorize выше, но я не хочу делать это все время. Я хочу, чтобы все действия контроллеров были недоступны по умолчанию, поэтому, если кто-то добавляет действие, он должен принять решение, чтобы сделать его доступным для широкой публики.

спросил(а) 2009-04-23T10:52:00+04:00 11 лет, 2 месяца назад
1
Решение
159

MVC4 имеет новый атрибут, специально предназначенный для этого [AllowAnonymous]


[AllowAnonymous]
public ActionResult Register()

http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx

ответил(а) 2013-02-18T03:08:00+04:00 7 лет, 4 месяца назад
87

Вы можете поместить атрибут Authorize в методы действия. Не только на уровне класса.

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

ответил(а) 2009-04-23T11:21:00+04:00 11 лет, 2 месяца назад
39

Единственным решением, о котором я могу думать до сих пор, является создание и регистрация другого контроллера, так что у меня есть один для анонимного доступа, а один для авторизованного доступа, но который не такой элегантный, как мне бы хотелось.

ответил(а) 2009-04-23T11:15:00+04:00 11 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема