Asp.net 核心中的会话和应用程序变量,以防我们使用 JWT 令牌(因此没有基于 cookie 的会话)

Posted

技术标签:

【中文标题】Asp.net 核心中的会话和应用程序变量,以防我们使用 JWT 令牌(因此没有基于 cookie 的会话)【英文标题】:Session and Application variables in Asp.net core in case we use JWT tokens (So no cookie based sessions) 【发布时间】:2018-03-07 18:11:15 【问题描述】:

我们正在使用从 IdentityServer 生成的 JWT 令牌身份验证。我想知道在调用各种控制器操作时执行会话变量(和应用程序范围变量)的相同功能的正确方法是什么。例如,我应该将这些变量存储在 InMemory 缓存中吗?

例如:我正在将文件上传到控制器动作,我需要一些其他控制器动作来报告该文件上传了多少,因此这两个动作需要有一个公共变量来报告该文件上传进度。 ..

谢谢...

【问题讨论】:

【参考方案1】:

Application Session 和 Authentication Session 是不同的概念。应用程序会话对于这种情况仍然是可行的。但是,您需要确保在上传请求之前在响应中发送会话 cookie,以便上传和状态请求可以正确关联。您还必须定期提交会话状态,以便状态请求可以读取它,它们不会共享相同数据的实时副本。

或者您使用内存缓存并给每个上传一个唯一的 id(在上传之前)。这与会话的工作方式几乎相同。

【讨论】:

以上是关于Asp.net 核心中的会话和应用程序变量,以防我们使用 JWT 令牌(因此没有基于 cookie 的会话)的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 中的会话变量

如何将从“选择”查询中获得的值存储到 ASP.net 中的会话变量中

在 ASP.NET 中的 Session.Clear() 和 Session.Abandon() 之后会话变量未清除

如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量

ASP.NET 中的 REST WCF 服务和会话

Chrome 和 IE 不发送 ASP.NET_SessionID - 即会话变量丢失?