0

HttpContext.User其是ClaimsPrincipal具有Claims的集合,但HttpContext.User还具有ClaimsIdentity的集合,其具有权利要求书和甚至像IsAuthenticatedName相同的属性的集合。HttpContext.User.Claims vs HttpContext.User.Identities.Claims?区别?何时使用其中一种?

对于管理员用户模仿的情况,有什么目的或何时使用某个用户?还是代表团?他们似乎能够根据角色和主张追踪相同的信息。如果我想让一个用户模拟另一个用户,看起来好像我可以用模拟用户覆盖HttpContext.User,只是存储一个值来表明它是一个模拟和原始用户,或者我可以将模拟的用户添加到ClaimsIdentities ?或者是其他东西?

我只是不知道这个结构,以确定利弊或如果有更好的方法。

回答

1

你不能使用一个。如果Identities属性(ClaimsIdentity的集合)中有一个ClaimsIdentity,则User.Identity将返回该标识。这是很容易验证与基本登录功能的应用程序。

enter image description here

Claims属性将返回所有在Identities属性中的每个身份索赔。平凡的是,如果你只有一个身份,那么你只能以这种身份获得主张。

拥有多个身份的基本思想与您携带驾驶执照,巴士通行证和工作证卡在您的钱包中的原因相同。每个身份都可以让您“访问”不同的区域,并允许您(合法地)执行单独的操作。

+0

这很有道理,谢谢。 – SventoryMang

相关问题