ASP.NET MVC Роли и безопасность

Предположим, что это мой метод действия SampleController

public ActionResult AdminView()
{
    return View()
}

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

В моем веб-приложении asp .net mvc, когда пользователь входит в систему, я сохраняю роль пользователя в сеансе в виде строки. И всякий раз, когда возникает необходимость проверить роль пользователя, я сравниваю значение, сохраненное в сеансе, с константой, скажем, «ADMIN_ROLE». Но я пишу этот фрагмент кода для проверки роли пользователя практически в каждом методе действия контроллера, а затем либо возвращаю соответствующее представление для пользователя, либо представление страницы неавторизованного доступа, если роль пользователя ограничена для метода действия контроллера.

Я погуглил и прочитал, что мы можем использовать что-то вроде этого.

[Authorize(Roles="admin")]
public ActionResult AdminView()
{
  return View()
}

Но я не уверен, как работает ключевое слово Authorize and Roles. Как при установке Roles = "Admin" будет полезна проверка строки моей роли пользователя, хранящейся в сеансе, или как я могу перенаправить пользователя на неавторизованную страницу, если роль не соответствует роли, помеченной для метода действия.

Ответы на вопрос(3)

Ваш ответ на вопрос