【发布时间】:2021-10-08 10:12:10
【问题描述】:
我们有几个 Web 应用程序使用相同的身份提供程序(我们也管理),其中大多数(包括身份提供程序)都使用 .NET 核心。
要求是,如果用户同时登录两个或多个应用程序(在一个浏览器中),并且正在积极使用一个应用程序,它会自动延长 所有应用程序的会话生命周期。
因此,当他至少使用一个应用程序时,他并没有退出任何一个应用程序。这是另一个要求:在一段时间不活动后自动注销(这部分当然很容易)
我想过使用 Redis 服务器来管理这个共享会话的生命周期,使用每个应用程序将通过声明从身份服务器接收的 SessionId。因此,每次用户执行某些操作时,后端都会联系 Redis 并检查用户的会话是否仍然处于活动状态,如果是,则延长会话的生命周期。如果不是,请注销用户。
问题是,不允许应用程序直接访问这个 Redis 服务器(安全原因)。所以我想为这些应用程序添加一个单独的 Web 服务,以便使用标准 HTTP 端点进行联系。所以基本上只是 Redis 和 Web 应用程序之间的中间人。
有没有更好的方法呢?不确定这种要求有多普遍。
【问题讨论】:
标签: session identity web-development-server