如果IdentServer4的Client是非SSL网站,如果使用Edge等浏览器会出现错误。这里给出解决办法。首先创建一个扩展:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace Microsoft.Extensions.DependencyInjection
{
public static class SameSiteCookiesServiceCollectionExtensions
{
public static IServiceCollection AddSameSiteCookiePolicy(this IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
options.OnAppendCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
options.OnDeleteCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
});
return services;
}
private static void CheckSameSite(HttpContext httpContext, CookieOptions options)
{
if (options.SameSite == SameSiteMode.None)
{
if (!httpContext.Request.IsHttps)
{
options.SameSite = SameSiteMode.Unspecified;
}
}
}
}
}
然后,在ConfigureServices中增加这个扩展:
services.AddSameSiteCookiePolicy();
最后,在Configure中使用这个扩展:
app.UseAuthentication();
app.UseCookiePolicy();
app.UseAuthorization();
注意, app.UseCookiePolicy();一定要在 app.UseAuthorization();的前面,否则不起作用。,
网友评论