SergeyAPetrov / Portal

Portal code
0 stars 0 forks source link

NullReferenceException если пользователя нет в БД #19

Open shevdrakon opened 9 years ago

shevdrakon commented 9 years ago

"имя машины" используется для поиска пользователя. Исправить падения если пользователь не найден.

GrimRanger commented 9 years ago

В проекте в данный момент установлена windows аутентификация. Если во время поиска в БД пользователь не найден, то его можно перенаправить на страницу ошибки. Если использовать страницу ошибки со стандартным контентом сверху, то у непрошедшего аутентификацию пользователя есть доступ к меню сверху, нажатие на которое вызывает ошибку. Стоит ли в данном случае создать особую страницу ошибки без кнопок сверху? или же стоит отлавливать этот случай? или попробовать использовать аутентификацию с помощью форм?

GrimRanger commented 9 years ago

Последнее решение работает за счет создания HttpException и обработки его в Application_Error. Такжк в проекте сделано с ошибкой. В проекте так сделана обработка HttpRequestValidationException. Или же нужно иначе сделать?

shevdrakon commented 9 years ago

HttpException - верно. Также в web.config можно настраивать редиректы => Application_Error не требуется.

GrimRanger commented 9 years ago

В данном случае с редиректом через web.config возникают две проблемы: 1.Ошибка сгенерированная в файле Global.asax с помощью customErrors не может быть перенаправлена на страницу ошибки с расширением aspx(только статические страницы доступны в этот момент). Поэтому придется сохранять информацию об ошибке, а после генерировать ее на главной странице(Default.aspx) при загрузке. 2.Нельзя сгененрировать 401 ошибку без использования "костылей" в случае Windows authentication. Система считает,что прошла проверку и не принимает 401 ошибку, которую в данном случае было бы логично использовать.Проблему можно решить заменив ошибку 401(401 Unauthorized) на 403(Forbidden), но в customErrors она обозначена и перенаправляет на свою страницу. В связи с этим возникает вопрос - для данной ошибки может стоит оставить обработчик в Application_Error ?

nikitina-nataliya commented 9 years ago
  1. Предлагаю алерт примерно следующего вида: "К сожалению, вы не сможете работать с интерфейсом портала внутреннего учета времени сотрудников Confirmit, т.к. в базе данных отсутствуют данные о вашем аккаунте. Чтобы создать аккаунт для работы с порталом обратитесь, пожалуйста, к администратору, например по электронной почте natalia.nikitina@confirmit.com или к Наталье Никитиной лично."
  2. В идеале адрес почты \ имя администратора должен быть не захардкожен, а прописан где то в очевидном месте в настройках