Обращение с конфиденциальностью в приложении
У меня есть приложение 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.
1 ответ
Для установки кода состояния вы можете использовать следующее:
HttpContextBase.Response.StatusCode = 401;
Однако, если вы используете MVC, вы можете просто установить в качестве результата HttpUnauthorizedResult, который установит для вас код состояния http.