Я хочу ограничить некоторые страницы на моем сайте в зависимости от прав пользователя, сохраненных в базе данных.
Ошибка возникнет на уровне доступа к службам/данным.
Я обнаружил, что если я выброшу UnauthorizedAccessException
тогда код состояния, возвращаемый конвейером asp.net, равен 401, что приведет к YSOD вместо перехода на страницу пользовательской ошибки MVC.
От чтения вокруг кажется, что мне нужно возвращать ошибку 403. Я создал специальный тип исключения для использования вместо UnauthorizedAccessException
. Как настроить MVC для возврата 403 ответа на эту ошибку? Как мне настроить фильтр для перенаправления на мою пользовательскую запрещенную страницу при этой ошибке? Правильно ли я подхожу?
Возможно, вы могли бы рассмотреть возможность создания аутентификации в asp.net MVC... Дело в том, что вы можете просто добавить атрибут [Authorize]
к своему контроллеру или [Authorize(Users="Alice,Bob")]
для пользователей и [Authorize(Roles="Administrators")]
для групп.
Ссылка на статью MSDN для справки. И учебник для auth в mvc