代码之家  ›  专栏  ›  技术社区  ›  Joe Mancuso

如何存储/检索大量用户身份声明

  •  2
  • Joe Mancuso  · 技术社区  · 7 年前

    我有一个发布到web服务器场的ASPNET CORE 2.0网站。我正在使用身份角色/用户声明进行授权。我有大量与登录用户相关的声明,这使得应用程序cookie的大小膨胀。我看到了一些处理这种情况的技巧,但我不确定该走哪条路。

    • 使用自定义 ClaimsTransformer :在标识角色/用户声明表之外创建自定义DB存储,并在上加载声明 TransformAsync 。我不确定是否有更好的解决方案,不需要每次往返服务器都调用DB。
    • 指定时指定分布式缓存会话存储 ApplicationCookie 。我不确定这是否能解决臃肿的cookie问题。
    • 使用粘性会话存储用户声明。我认为这不适用于索赔授权( [Authorize] )

    当用户有大量声明时,如何跨多个web服务器使用基于声明的标识?

    1 回复  |  直到 7 年前
        1
  •  3
  •   McGuireV10    7 年前

    饼干大小基本上是反对“一切都是一种说法”的最有力的论据,这很不幸,因为这种模式运行得很好,否则(我一直站在你的立场上)。正如您所怀疑的那样,最好的方法是将您的声明限制在最低限度,并根据需要使用身份(主题id)从数据库中检索更详细的特定于应用程序的信息。

    如果数据库响应时间是一个问题,那么您基本上回到了有状态会话数据。微软可能会引导您使用Redis内存缓存。不确定亚马逊上是否有这样的选项,我使用Azure。

    我试过了 ClaimsTransformer 常规,但它成为一个更大的麻烦不断解决“这是 真正地 是索赔还是我们将其视为索赔?“而不仅仅是将真实IDP声明的持久性/检索与内部应用程序级用户数据分离。

    推荐文章