ASP.NET5 WebAPI Session 带重定向

ASP.NET5 WebAPI Session with redirect

我试图在我的 WebAPI 的第一个方法中存储一个 session,然后从第二个方法中获取它。 我正在使用 HttpContext.Session.SetString,并且在我的状态文件中包含了所需的“app.useSession”和 services.AddDistributedMemoryCache()、services.AddSession() 方法。

问题是,我的第一个方法有一个 return 类型的“RedirectResult”,并且它正在做一个“new Redirect(”http:// ...”)”

然后当我尝试 运行 第二种方法时,session 为空。我假设是因为在第一种方法中发送到浏览器的 session cookie headers 被重定向覆盖了。

那么有什么办法呢? 我正在尝试存储一个 code_verifier 字符串(用于 OAuth PKCE 实现),然后重定向到一个 OAuth 代码请求端点


更新:看来我最初的猜测是错误的。这与重定向无关。 当 OAuth 服务器重定向回我的第二个 WebAPI 方法时,它通过 POST 执行此操作。出于某种原因,cookie(包括 AspNetCore.Session cookie) 没有被发送,这与我尝试通过浏览器中的普通 GET 发出请求时不同...

我确实看到 AspNetCore.Session cookie 的 SameSite 设置为 LAX。 那我该怎么做呢..?

当请求来自第 3 方 POST 时,“LAX”cookie 不允许它被转移。

通过将 .NET 核心会话 cookie 的 SameSite 属性 设置为“None”,问题已得到解决。这还需要将 Secure 标志设置为“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();