猿问

.net core 2.0 cookie 身份验证在尝试通过 https 访问时陷入无限重定向循环

我刚刚将我的代码移到我们使用 https 的 QA 环境中,而在 Dev 中工作的内容在 QA 中不起作用,因为浏览器陷入无限重定向循环。我们的负载均衡器强制使用 https,因此当登录重定向发生在代码中时,由于某种原因,它试图重定向到 http 而不是 https,负载均衡器会停止它并再次添加 https,这会导致无限循环。我的问题是为什么这段代码不只是重定向到 https,路径在ConfigureServices()方法中是相对的。我已经在 fiddler 中查看过它,它确实为使用 http 而不是 https 的重定向添加了 FQDN。


是否有一些属性需要添加到此处的选项中以允许 https 重定向?


    public void ConfigureServices(IServiceCollection services)

    {

        services.AddMvc();

        services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)

            .AddCookie(options =>

            {

                options.LoginPath = "/Account/LogIn";

                options.LogoutPath = "/Account/LogOff";

            });

    }


    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    {

        app.UseAuthentication();

    }

谢谢。


莫回无
浏览 278回答 3
3回答

www说

我们只是使用: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)    {                   ... //settings and logging initialization        app.Use((context, next) =>        {            context.Request.Scheme = "https";            return next();        });        ... //all the rest middleware calls    }它在 OWIN 和 .Net Core 2.0 以下的大多数情况下都有帮助

肥皂起泡泡

对于 .net core 2.1 及更高版本的 azure 身份验证,请尝试使用此代码。 services.Configure(AzureADDefaults.CookieScheme, options =>    {    options.Cookie.SameSite = SameSiteMode.None;    });services.AddAuthentication(AzureADDefaults.AuthenticationScheme)             .AddAzureAD(options => Configuration.Bind("AzureAd", options));
随时随地看视频慕课网APP
我要回答