我正在使用自定义授权机制,将当前用户会话存储在 cookie 中。每次有人访问网站时,ActionFilter 都会启动它来验证 cookie 值和会话状态。
我遇到的问题是 - 我必须将POST一些数据发送到另一个网站(https://differentUrl.com),在那里我传递我的网站 returnUrl (https://mywebsiteUrl.com)。完成工作后,不同的网站将POST响应发送回我的 returnURL。发生这种情况后,我尝试获取的 cookie 始终为null.
像这样创建 cookie(这发生在登录时):
private readonly IHttpContextAccessor _contextAccessor; //Injected via DI
...
var cookieOptions = new CookieOptions()
{
Expires = DateTime.Now.AddDays(10),
Secure = true,
HttpOnly = false,
SameSite = SameSiteMode.None //Still sets as Lax in browser
};
this._contextAccessor.HttpContext.Response.Cookies.Append("SomeKey", "myEncryptedCookieValue", cookieOptions);
Run Code Online (Sandbox Code Playgroud)
重定向后检索cookie:
var cookieDataString = this._contextAccessor.HttpContext.Request.Cookies["SomeKey"];
Run Code Online (Sandbox Code Playgroud)
在cookieDataString始终null。
当我在同一个网站上时它工作正常,但是当我从另一个网站重定向回来时,它总是 null
更新 1:
经过一番研究,我发现这个问题可能会导致SameSite政策。发现这篇文章使用相同的站点 …