我在Startup.cs中有以下会话配置
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
// Make the session cookie essential
options.Cookie.IsEssential = true;
});
}一切正常,会话会保留会话Id和数据。我要把一些预订信息放在那里。然后我将用户重定向到支付页面。成功付款后,用户被重定向回我的网站通过POST到PaymentController成功的行动。
显然,这个来自支付平台的POST请求不包含会话cookie,所以我只是在PaymentController成功操作中执行RedirectToAction("ContinueBooking"," payment ")。
重定向至操作后-浏览器发送会话cookie,但此时会话似乎已丢失,并分配了新的会话Id,所有数据都将丢失。有什么方法可以防止这种情况发生吗?或者我应该只使用数据库来存储重定向之间的数据(我可以通过支付终端绕过一些参数)?
发布于 2020-04-02 22:36:38
如果两个应用程序都在同一服务器上,那么这两个应用程序将是相同的cookie,第一个cookie将被支付应用程序的会话cookie覆盖。要避免这种情况,请自定义cookie名称:
services.AddSession(opt => { opt.Cookie.Name = "MySessionCookie"; });
发布于 2021-11-15 09:20:01
我有相同的场景,我需要重定向到另一个站点(身份网关),此站点post返回带有http post的响应标识。
对我来说,对于创建会话cookie的.net Core3.1,我需要使用options.Cookie.SecurePolicy.
如果没有这个,就不会创建cookie。
services
.Configure<CookiePolicyOptions>(options =>
{
// not necessary
//options.MinimumSameSitePolicy = SameSiteMode.None;
})
.AddSession(options =>
{
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest; // this is the key
})https://stackoverflow.com/questions/55814347
复制相似问题