ASP.NET 核心 MVC 会话同一站点 URL
ASP.NET Core MVC session same site URL
我有 2 ASP.NET 核心 MVC 应用程序 运行 在一个 IP 的不同端口上(例如 App1:192.168.0.1:8000 和 App2:192.168.0.1:8001)。
登录App1
后,再登录App2
,App1
会为下一次请求创建一个新的SessionId
,所以无法获取授权数据的旧会话。
我在startup.cs
中是这样设置的
public void ConfigureServices(IServiceCollection services)
{
....
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
....
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(60);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
....
app.UseCookiePolicy();
app.UseSession();
....
}
发现我没有为每个应用程序设置cookie名称,所以它会像@GordonKhanhNg一样互相覆盖cookie。刚才说了
services.AddSession(options => {
....
options.Cookie.Name = ".App1.Session";
....
});
我有 2 ASP.NET 核心 MVC 应用程序 运行 在一个 IP 的不同端口上(例如 App1:192.168.0.1:8000 和 App2:192.168.0.1:8001)。
登录App1
后,再登录App2
,App1
会为下一次请求创建一个新的SessionId
,所以无法获取授权数据的旧会话。
我在startup.cs
public void ConfigureServices(IServiceCollection services)
{
....
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
....
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(60);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
....
app.UseCookiePolicy();
app.UseSession();
....
}
发现我没有为每个应用程序设置cookie名称,所以它会像@GordonKhanhNg一样互相覆盖cookie。刚才说了
services.AddSession(options => {
....
options.Cookie.Name = ".App1.Session";
....
});