在具有OIDC身份验证的Web应用程序中,从db存储与用户相关的数据的最佳方法

问题描述

我有一个受azureAD(OpenIdConnect)保护的Core3.1 Web应用程序,我从idtoken检索了所需的大多数用户相关数据: 用户名,电子邮件,employeeId,甚至用户的广告组。 我还需要从数据库中获取一些其他数据,而且我不确定如何将这些数据存储在应用程序中,以使其在用户登录的整个时间和整个位置都可用。

我不想使用cookie。现在,我使用了会话。 问题在于此会话与身份验证会话的到期时间不同,因此我不得不调用静态方法来检查变量是否为空,并最终再次执行查询。 它可以工作...但是很丑。

我觉得我应该以不同的方式处理事情,但是我不知道怎么做。

解决方法

基于声明的解决方案在以下情况下最有效:

  1. 在您的API中定义一个Claims Object
  2. 在您的API首次收到访问令牌时填充它
  3. 为具有相同访问令牌的后续请求缓存Claims对象
  4. 此缓存将始终与用户会话保持同步

有关该模式的更多详细信息,请参见我的blog post。这是一些implementation code

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...