Переадресация на страницу входа при некоторых условиях проверки сеанса - PullRequest
1 голос
/ 24 мая 2009

В C # с MVC я хочу написать общую утилиту или класс, в котором в случае сбоя конкретного условия необходимо перенаправить на страницу входа.

Например: при входе пользователя на сайт идентификатор пользователя будет добавлен в сеанс. Чтобы получить доступ к странице «ManageUsers», пользователь должен войти в систему как администратор, в противном случае мне нужно перенаправить на страницу входа. Мне нужно проверить это условие на некоторых других подобных страницах также. я не хочу проверять, является ли пользователь администратором или обычным пользователем при входе в систему. Мне нужно проверить это в общем классе.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 24 мая 2009
[Authorize(Roles = "Admin")]
public ActionResult ManageUsersController()
{
    ...
}

В проверке web.config:

...
<forms loginUrl="~/your_login_page" defaultUrl="~/">
...

Также вы должны установить в вашем web.config * MembershipProvider и RoleProvider

1 голос
/ 24 мая 2009

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

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

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

1 голос
/ 24 мая 2009

Это уже существует в ASP.NET MVC с атрибутом Authorize:

[Authorize(Roles="Administrators")]
public AcitonResult ManageUsers() {

 return View();

}

или

[Authorize(Users="Admin,SomeUser")]
public AcitonResult ManageUsers() {

   return View();

}

Больше информации:
http://www.asp.net/learn/mvc/tutorial-17-vb.aspx

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