asp.net/iis НЕ добавляет ReturnUrl при перенаправлении на страницу входа - PullRequest
0 голосов
/ 07 ноября 2019

Используя проверку подлинности с помощью форм в традиционном (не mvc) приложении asp.net, я не могу получить IIS или IIS-express (при отладке в VS2019), чтобы добавить ReturnUrl к строке запроса при перенаправлении в login.aspx. Таким образом, Request ["ReturnUrl"] всегда равен нулю.

За несколько дней я прочитал много вопросов / ответов, касающихся того, что Redirect не работает, но это всегда относится к после аутентификации, и никто, кого я видел, не имеетбыла проблема, когда? ReturnUrl = / blah / blah / blah даже не добавляется к самому URL.

Также есть случаи чтения, когда пользователи хотят, чтобы ReturnUrl НЕ добавлялся, что может быть исправлено некоторым кодом в Global.asax. К счастью, я хотел бы, чтобы у меня была эта проблема вместо того, чтобы вообще не получать ReturnUrl!

Я перепробовал каждую возможность web.config в отношении тега;указание / не указание loginUrl и defaultUrl;с указанием разрешения / отказа и всех их комбинаций у меня есть Global.asax, но он пуст для методов, связанных с запросом. Я также изучил различные параметры IIS, чтобы определить, добавляет ли он параметр returnUrl, но я не нашел ничего, что предлагало бы этот параметр.

The latest basic entry I tried:

<authentication mode="Forms">
  <forms timeout="120" slidingExpiration="true" />
</authentication>
<authorization>
  <!--<deny users="?"/>-->
  <allow users="*"/>
</authorization>

Я также должен добавить, что используюпользовательский поставщик членства, а не поставщик членства asp.net по умолчанию. Хотя не уверен, что это будет иметь значение даже при добавлении / не добавлении IIS ReturnUrl, но вы никогда не знаете ...

<membership defaultProvider="LegacyDBMembershipProvider">
  <providers>
    <remove name="AspNetSqlMembershipProvider"/>
    <add name="LegacyDBMembershipProvider" someothertags... />
  </providers>
</membership>

Я бы хотел, чтобы IIS перенаправил меня на login.aspx (как это было), ноURL выглядит так: http://localhost:21542/MyWeb/Login.aspx?ReturnUrl=/MyWeb/RequestedPage.aspx вместо просто: http://localhost:21542/MyWeb/Login.aspx

, чтобы после аутентификации я мог перенаправить пользователя на первоначально запрошенную страницу.

Спасибо за ваше время иваше внимание.

1 Ответ

0 голосов
/ 08 ноября 2019

Спасибо, Брандо, Wazz и все, что заняло время, чтобы прочитать мой вопрос. Очевидно, это сводится к самому тегу [allow users = "" />. Был ли у меня [запретить пользователям> где-либо до или после него. Я не уверен, почему, если у меня есть только [allow users = "" /> (и без тега deny), что он по-прежнему вызывает на странице входа (что я хотел), но это происходит и БЕЗ добавления ReturnUrl. Отсюда и моя проблема. Но после удаления любых тегов [allow> (я пробовал с отдельными пользователями, группами, * и т. Д.) Произошло чудо, и я получил ReturnUrl. Это также может быть связано с отсутствием атрибута defaultUrl в теге [forms>. Я думал, что перепробовал каждую комбинацию, но, видимо, нет.

В любом случае, я собираюсь немного подробнее изучить ПОЧЕМУ это работает таким образом, и я опубликую любую информацию, которую смогу собрать для потомков, но правильнотеперь я просто рад, что в строку запроса добавляется ReturnUrl. Еще раз спасибо всем.

...