lav*_*rik 6 c# session-state session-cookies asp.net-core
我在 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;
});
}
Run Code Online (Sandbox Code Playgroud)
一切正常,会话保持会话 ID 和数据。我把一些预订信息放在那里。然后我将用户重定向到付款页面。成功付款后,用户将通过 POST 到 PaymentController Success 操作重定向回我的网站。
显然,来自支付平台的这个 POST 请求不包含会话 cookie,所以我只是在 PaymentController Success 操作中执行 RedirectToAction("ContinueBooking","Payment") 。
重定向到操作后 - 浏览器发送会话 cookie,但此时会话似乎丢失并分配了新的会话 ID,所有数据都丢失了。有什么办法可以防止这种情况吗?或者我应该只使用数据库在我的情况下在重定向之间存储数据(我可以通过支付终端绕过一些参数)?
小智 3
如果两个应用程序位于同一服务器上,则两个应用程序都将是相同的 cookie,并且第一个 cookie 将被支付应用程序的会话 cookie 覆盖。为了避免这种情况,请自定义 cookie 名称:
services.AddSession(opt =>
{
opt.Cookie.Name = "MySessionCookie";
});
| 归档时间: |
|
| 查看次数: |
2898 次 |
| 最近记录: |