Обращение с конфиденциальностью в приложении

У меня есть приложение asp.net mvc3, где каждый зарегистрированный пользователь может иметь доступ к некоторым конкретным данным.

Например, "пользователь A" имеет доступ к "клиенту 1", но не "клиенту 2", в то время как "пользователь B" имеет доступ к "клиенту 2", но не "клиенту 1".

Если пользователь имеет доступ к http://myApp/Clients/2, мы бросим пользовательское исключение, скажем, ConfidentialityException,

Исходя из этого, мы можем поймать его в ловушку global.asaxApplication_Error, Но с этого момента мне интересно, что было бы лучшей практикой:

  • Возврат страницы с ошибкой с кодом http 403 (как?)
  • Просто возвращаю страницу с ошибкой.
  • Пусть это рухнет.
  • другое предложение?

Мое предпочтительное решение - первое (страница ошибки с 401), но я не вижу, как установить http-код из Application_Error.

редактировать

Я изменил код состояния 401 на 403, так как это не ошибка аутентификации, а конфиденциальность. 403 кажется более подходящим в соответствии с w3c.

1 ответ

Для установки кода состояния вы можете использовать следующее:

HttpContextBase.Response.StatusCode = 401;

Однако, если вы используете MVC, вы можете просто установить в качестве результата HttpUnauthorizedResult, который установит для вас код состояния http.

Другие вопросы по тегам