Обращение с конфиденциальностью в приложении - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть приложение 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 Ответ

2 голосов
/ 05 декабря 2011

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

HttpContextBase.Response.StatusCode = 401;

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

...