【问题标题】:ASP.Net MVC identity infinite redirect loopASP.Net MVC 标识无限重定向循环
【发布时间】:2015-08-02 14:58:50
【问题描述】:

我有一个 ASP.Net MVC5 应用程序,根据 ASP.Net Identity 2.0.0 使用 Identity“开箱即用”模板。我需要升级它以使用最新的 ASP.Net MVC 模板中的更新代码,即使用 SignInManager 类。

我在原始应用程序中的代码和最新生成的模板之间进行了一些 A|B 比较,并移植了所有我能看到的不同之处。

但是,我遇到了一个奇怪的错误,我怀疑与 OWIN 有关。当我尝试登录或注册时,它会触发一个重定向循环,最终导致应用程序崩溃并发出安全警告,因为 URL 查询字符串已将自身连接到死。


网址是: https://localhost:44302/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253D%25252FAccount%25252FLogin%25253FReturnUrl%25253D%2525252FAccount%2525252FLogin%2525253FReturnUrl%2525253D%252525252FAccount%252525252FLogin%252525253FReturnUrl%252525253D%25252525252FAccount%25252525252FLogin%25252525253FReturnUrl%25252525253D%2525252525252FAccount%2525252525252FLogin%2525252525253FReturnUrl%2525252525253D%252525252525252FAccount%252525252525252FLogin%252525252525253FReturnUrl%252525252525253D%25252525252525252FAccount%25252525252525252FLogin%25252525252525253FReturnUrl%25252525252525253D%2525252525252525252FAccount%2525252525252525252FLogin%2525252525252525253FReturnUrl%2525252525252525253D%252525252525252525252FAccount%252525252525252525252FLogin%252525252525252525253FReturnUrl%252525252525252525253D%25252525252525252525252FAccount%25252525252525252525252FLogin%25252525252525252525253FReturnUrl%25252525252525252525253D%2525252525252525252525252FAccount%2525252525252525252525252FLogin%2525252525252525252525253FReturnUrl%2525252525252525252525253D%252525252525252525252525252FAccount%252525252525252525252525252FLogin%252525252525252525252525253FReturnUrl%252525252525252525252525253D%25252525252525252525252525252FAccount%25252525252525252525252525252FLogin%25252525252525252525252525253FReturnUrl%25252525252525252525252525253D%2525252525252525252525252525252FAccount%2525252525252525252525252525252FLogin%2525252525252525252525252525253FReturnUrl%2525252525252525252525252525253D%252525252525252525252525252525252FAccount%252525252525252525252525252525252FLogin%252525252525252525252525252525253FReturnUrl%252525252525252525252525252525253D%25252525252525252525252525252525252FAccount%25252525252525252525252525252525252FLogin%25252525252525252525252525252525253FReturnUrl%25252525252525252525252525252525253D%2525252525252525252525252525252525252FAccount%2525252525252525252525252525252525252FLogin%2525252525252525252525252525252525253FReturnUrl%2525252525252525252525252525252525253D%252525252525252525252525252525252525252FAccount%252525252525252525252525252525252525252FLogin

详细错误信息:

模块    RequestFilteringModule

通知    BeginRequest

处理程序   ExtensionlessUrlHandler-Integrated-4.0

错误代码    0x00000000


在所有方法中引用 ReturnUrl 时,我使用了完全相同的设置。

在大多数情况下,我的应用程序的原始 AccountController 和相关的安全代码与原始模板没有任何关系。 我较新的示例应用程序在我的本地机器上运行良好,所以我不确定差异在哪里。

我看到帖子暗示 IIS Express 配置是罪魁祸首,但我遵循了清理建议,并且也发布到 Azure 站点,结果相同。

我花了很多时间试图解决这个问题,但没有取得任何成功,所以我想我会把它放在那里寻求一些建议……在此先感谢您的任何帮助。如果您需要查看更多代码,请告诉我。

【问题讨论】:

  • 确保您没有在该网站的 iis 中启用 windows 身份验证
  • Windows 身份验证被禁用,包括在 IISExpress 配置设置中
  • 您解决了这个问题吗?我最近遇到了同样的一个。如果你设法解决了这个问题,你能分享一下解决方案吗?谢谢

标签: asp.net asp.net-mvc owin asp.net-identity-2


【解决方案1】:

我认为您的登录操作缺少[AllowAnonymous] 属性。

【讨论】:

  • 嗨,Bart,[AllowAnonymous] 属性位于登录操作(也注册)
  • 也试试控制器?
  • 你能发布你的过滤器吗?很确定你有一些授权或 ssl 的事情。
【解决方案2】:

您是否在本地设置了 SSL? 在 HTTPS 上进行身份验证,然后被重定向到 HTTP,这正在杀死 cookie 并重定向回 HTTPS 登录页面

你有没有在 web.config 中有一些东西用于表单身份验证重定向,比如

  protection="All" requireSSL="true" loginUrl="~/Account/Login.aspx"

你的 cookie 看起来还好吗?

【讨论】:

  • HTTPS 在过滤器配置中设置:filters.Add(new RequireHttpsAttribute());但是问题原来是 DI 问题,请参阅下面的回复。
【解决方案3】:

已解决...原来罪魁祸首是我的 Unity DI 配置。

我深入研究发现错误在每次重定向时递归抛出,这表明 AccountController 依赖项没有被实例化。去年我遇到了类似的问题 Unity Container trying to resolve non registered type, throwing error ,因此我进一步研究了更改的依赖项。

按照Register IAuthenticationManager with Unity 的建议答案解决了该问题。

感谢关于 SSL / HTTPS / 过滤器的建议,调查这些导致我发现了异常。

【讨论】:

    【解决方案4】:

    我之前也遇到过同样的问题,通过在 web config 中添加这一行来解决

    <add key="owin:AutomaticAppStartup" value="false"/>
    

    它将禁用 OWIN 启动发现。

    我希望它会起作用。

    同时检查 IIS 虚拟目录。检查匿名用户是否启用,如果禁用则启用它并解决问题。

    【讨论】:

    • 转到 IIS 管理器 -> 选择服务器 -> 身份验证并确保启用匿名身份验证。我希望你在这个问题上花费的时间比我少。
    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2010-09-19
    • 2013-01-25
    相关资源
    最近更新 更多