重定向到登录页面时,asp.net/iis 不附加 ReturnUrl
Posted
技术标签:
【中文标题】重定向到登录页面时,asp.net/iis 不附加 ReturnUrl【英文标题】:asp.net/iis is NOT appending a ReturnUrl when redirected to login page 【发布时间】:2020-03-04 08:25:33 【问题描述】:在传统(非 mvc)asp.net 应用程序中使用表单身份验证,当重定向到 login.aspx 时,我无法让 IIS 或 IIS-express(在 VS2019 中调试时)将 ReturnUrl 附加到请求查询字符串。因此 Request["ReturnUrl"] 始终为空。
几天来,我已经阅读了很多关于重定向不起作用的问题/答案,但它始终与身份验证后有关,而且我所见过的没有人遇到 ?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
这样在身份验证后我可以将用户重定向到最初请求的页面。
感谢您的时间和考虑。
【问题讨论】:
您能否在问题中添加创建重定向到登录页面的确切情况? 据我所知,内置表单认证会自动添加返回URL而不使用会员。我猜这个问题与您的会员提供商有关。您能否发布有关您的自定义会员提供商的详细信息代码? 【参考方案1】:感谢 Brando、wazz 和所有花时间阅读我的问题的人。显然它归结为 [allow users=""/> 标签本身。无论我在它之前或之后是否有 [deny users> 任何地方。我不知道为什么如果我只有 [allow users=""/> (并且没有拒绝标签)它甚至仍然强制登录页面(我想要的)但是它确实并且没有附加 ReturnUrl。因此我的问题。但是在删除任何 [allow> 标签后(我尝试了单个用户、组、* 等),奇迹发生了,我得到了一个 ReturnUrl。它也可能与未在 [forms> 标记中提供 defaultUrl 属性有关。我以为我已经尝试了所有组合,但显然没有。
无论如何,我会做更多的研究来了解为什么它会这样工作,我会发布任何我可以为后代收集的信息,但现在我只是头晕目眩,我得到了一个 ReturnUrl 附加在查询字符串中。 再次感谢大家。
【讨论】:
以上是关于重定向到登录页面时,asp.net/iis 不附加 ReturnUrl的主要内容,如果未能解决你的问题,请参考以下文章