Определение пути авторизации форм, ошибочно перенаправляющего в ReturnUrl после входа в систему - PullRequest
1 голос
/ 14 января 2011

У меня очень странная проблема с формами, я надеюсь, что кто-то может пролить свет на это. Вот что находится в web.config:

<location path="Admin">
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
</location>

А для аутентификации:

<authentication mode="Forms">
  <forms loginUrl="~/Admin/LogOn.aspx" name="MyAppAdmin" requireSSL="false" path="/Admin" cookieless="UseCookies"/>
</authentication>

Существует также пользовательский поставщик членства, реализующий ValidateUser для хранилища учетных данных. В приложении есть главная страница с элементом управления LoginName.

Кажется, что происходит то, что иногда пользователь входит в систему успешно, но страница входа остается, а не перенаправляет их на ReturnUrl в строке запроса. Мы знаем, что они успешно прошли проверку подлинности, поскольку элемент управления LoginName показывает их личность, и они всегда могут перейти к другому защищенному содержимому.

К сожалению, мы не можем определить шаблон, который вызывает это. Различные браузеры, разные серверы, удаление куки, SSL или без SSL; Там нет различимой картины. Единственное, что ясно , так это то, что после удаления атрибута «путь» из узла форм проблему воспроизвести не удалось.

Что-то явно не так с этой конфигурацией? Есть мысли о возможной причине? Очевидно, что атрибут path не является обязательным, но было бы неплохо выделить вещи немного дальше.

1 Ответ

2 голосов
/ 14 января 2011

Таким образом, я действительно нашел ответ на этот вопрос прямо перед тем, как нажать кнопку «Отправить», но вставил его ради информации о SO.Рик Стрэхл действительно прибил это в этом посте ;это проблема чувствительности к регистру.

По сути, если вы нажмете «/ admin», он перенаправит вас на «/Admin/LogOn.aspx?ReturnUrl=%2fadmin%2fdefault.aspx», а затем после проверки подлинности cookie будет настроен напуть "/ Admin" (определенный в web.config), затем вы будете перенаправлены на "/admin/Default.aspx".Сравнение путей чувствительно к регистру, поэтому вы не идентифицированы как аутентифицированные, поэтому вы возвращаетесь к форме.

Причина, по которой мои результаты были ошибочными, была из-за того, что некоторые люди вручную вводили "Admin", а другиенабрав "админ".Я не был рядом с парнями, делающими это, и все это звучало просто отлично по телефону.

Простой ответ;избавиться от атрибута пути.Это слишком много проблем, если у вас нет абсолютной уверенности, что дело не изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...