【问题标题】:HttpContext.User.Claims vs HttpContext.User.Identities.Claims? Difference? When to use one over the other?HttpContext.User.Claims vs HttpContext.User.Identities.Claims?区别?什么时候使用一个而不是另一个?
【发布时间】:2017-08-25 16:46:07
【问题描述】:

作为ClaimsPrincipalHttpContext.User 具有Claims 的集合,但HttpContext.User 也具有ClaimsIdentity 的集合,它具有声明的集合,甚至具有与IsAuthenticated 相同的属性和Name

在为管理员模拟用户的情况下,使用其中一种的目的或时间是什么?还是委托?似乎他们能够根据角色和声明跟踪相同的信息。如果我想让一个用户模拟另一个用户,似乎我可以用模拟用户覆盖 HttpContext.User 并存储一个值以指示它是模拟和原始用户,或者我可以将模拟用户添加到 ClaimsIdentities ?或者是其他东西?

我只是不太了解这种结构,无法确定优缺点或是否有更好的方法。

【问题讨论】:

    标签: .net authentication asp.net-core-mvc asp.net-identity claims-based-identity


    【解决方案1】:

    您不能将一个用于另一个。如果Identities 属性(ClaimsIdentity 的集合)中有一个ClaimsIdentity,则User.Identity 将返回该标识。这很容易通过具有基本登录功能的应用程序进行验证。

    Claims 属性将返回Identities 属性中每个身份的所有声明。简单地说,如果您只有一个身份,那么您只能获得该身份的声明。

    拥有多个身份背后的基本理念与您可能随身携带驾照、公交卡和工作证的原因相同。每个身份都可以让您“访问”不同的区域并允许您(合法地)执行单独的操作。

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 1970-01-01
      • 2020-05-26
      • 2011-10-01
      • 2020-06-08
      • 2019-09-07
      • 1970-01-01
      • 2010-10-28
      • 2017-01-23
      相关资源
      最近更新 更多