我试图在WebAPI的第一个方法中存储一个会话,并从第二个方法中获取它。我正在使用HttpContext.Session.SetString,并且在我的statup文件中包含了所需的"app.useSession“和services.AddDistributedMemoryCache()、services.AddSession()方法。
问题是,我的第一个方法有一个返回类型"RedirectResult“,并且它正在执行一个”新的重定向(“http://.”)
然后,当我尝试运行第二个方法时,会话为null。我假设是因为在第一个方法中发送给浏览器的会话cookie头被重定向覆盖。
那么,怎样才能做到呢?我试图存储一个code_verifier字符串(用于OAuth PKCE实现),然后重定向到OAuth代码请求端点
更新:似乎我最初的怀疑是不正确的。这与重定向无关。当OAuth服务器重定向到我的第二个WebAPI方法时,它会通过POST实现这一点。由于某些原因,cookie(包括AspNetCore.Session cookie)不会被发送,不像我试图通过浏览器中的普通GET发出请求时那样.
我确实看到了用于SameSite cookie的AspNetCore.Session设置为LAX。那我该怎么做..?
发布于 2022-02-10 12:28:08
一个"LAX“曲奇不允许它被结转,当请求通过邮寄来自第三方。
通过将SameSite核心会话cookie的.NET属性设置为"None“,解决了这个问题。这还要求将安全标志设置为"true“,WebAPI运行在https上。
上一次会话cookie必须手动从浏览器中删除,才能生效。
services.AddSession(options =>
{
options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always;
});
services.AddSession();https://stackoverflow.com/questions/71064252
复制相似问题