У меня есть приложение asp.net mvc3, где каждый зарегистрированный пользователь может иметь доступ к некоторым конкретным данным.
Например, «пользователь A» имеет доступ к «Клиенту 1», но не «Клиенту 2», в то время как «пользователь B» имеет доступ к «Клиенту 2», но не «Клиенту 1».
Если пользователь имеет доступ к http://myApp/Clients/2
, мы выдадим пользовательское исключение, скажем ConfidentialityException
.
Исходя из этого, мы можем поймать его в ловушку global.asax
Application_Error
. Но с этого момента мне интересно, что было бы наилучшей практикой:
- Возвращение страницы ошибки с кодом http 403 (как?)
- Просто вернуть страницу с ошибкой.
- Пусть рухнет.
- другое предложение?
Мое предпочтительное решение - первое (страница ошибки с 401), но я не вижу, как установить http-код из Application_Error.
Редактировать
Я изменил код состояния 401 на 403, поскольку это не ошибка аутентификации, а конфиденциальность. 403 кажется более подходящим в соответствии с w3c .