【问题标题】:Asp Net Core with Identity not working after removing HTTPS删除 HTTPS 后,具有身份的 Asp Net Core 无法正常工作
【发布时间】:2020-05-28 10:10:02
【问题描述】:

我试图删除 HTTPS 以测试一些缓存功能,但我的身份验证停止工作。我读到,如果没有 HTTP,使用 Identity 身份验证将停止工作,即使具有身份验证方案的自定义身份验证 cookie 也将无法工作。

在我评论这 2 行之后,我的应用程序将不再工作。

    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();

    app.UseHttpsRedirection();

HTTPS 的使用不是强制性的,该应用程序是在我们的 Intranet 上使用的,我使用 Identity 只是为了管理用户。我现在有什么选择?

即使有这一切,当我尝试登录时,它会将我重定向回登录页面,并且使用自定义身份验证 cookie 而不是身份。

  services.AddAuthentication().AddCookie(AuthenticationSchemes.Production, options =>
        {
            options.ExpireTimeSpan = TimeSpan.FromHours(8);
            options.LoginPath = new PathString("/Login");
            options.LogoutPath = new PathString("/Logout");
            options.Cookie.HttpOnly = true;
            options.AccessDeniedPath = new PathString("/AccessDenied");
            options.SlidingExpiration = true;
            options.Cookie.Name = "NoPaper.Production";
            options.ExpireTimeSpan = TimeSpan.FromHours(8);
        });

更新

似乎唯一可行的解​​决方案是在没有 https 的情况下创建一个新项目,然后从其他项目复制所有内容并安装 nuget 包,它就可以工作了。

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    请详细说明身份验证不起作用,有什么错误吗?尝试使用 F12 开发者工具进行检查。请确保您没有使用 ex

    据我所知,当我们通过 Visual Studio 创建 dotnet core 应用程序时,如果我们选择个人用户帐户(使用身份),出于最佳实践原因,它通常会强制使用 https。

    在这种情况下,要禁用 HTTPS,我们可以参考以下步骤:

    1. 从 Startup.cs 中删除 UseHttpsRedirection:

      app.UseHsts();  
      app.UseHttpsRedirection();
      
    2. 右击项目,点击Properties,在Debug标签中,取消选中Enable SSL选项。然后,应用程序将使用 HTTP 请求启动。

      如果您不使用 Visual Studio,您还可以删除 launchSettings.json 文件中的 SSL 引用:

    此外,请确保您没有在应用程序中使用外部身份验证服务。我创建了新的 dotnet core 应用程序并使用上述方法禁用 HTTPS,然后,我可以使用 Identity 注册新用户并登录。

    【讨论】:

    • 我都试过了,没有错误,就是不让我认证
    • 首先,我想和你确认一下,使用上述方法后,你成功禁用了HTTPS,它会成功使用HTTP请求,对吧?现在,问题是它不会让用户进行身份验证。什么时候出现这个问题,用户登录还是注册用户?您可以尝试在这部分代码中设置断点,并检查此问题发生在哪里?如果找不到登录或注册页面,请查看this link。此外,请确保在 Startup.cs 中添加了app.UseAuthorization();app.UseAuthentication();
    • 我做了很多事情,我不会登录,它会重定向回登录页面。我什至没有在这个登录页面上使用身份 cookie
    • 从你的描述和提供的代码看来,你在 Startup.cs 文件中添加了一些 Identity 配置,请与新应用程序(没有 Https)进行比较,也许你可以找到不同之处。另外,你可以把相关代码贴在 Startup.cs 中,这样我们可能更容易找到真正的原因。
    猜你喜欢
    • 1970-01-01
    • 2018-02-17
    • 2020-08-17
    • 1970-01-01
    • 2021-12-16
    • 2017-07-20
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多