.net IIdentity.Name应返回什么?

t5zmwmid  于 2023-03-09  发布在  .NET
关注(0)|答案(1)|浏览(102)

我试图基于来自远程服务的用户会话数据填充ASP.NET核心中的ClaimsIdentity对象。我注意到在某些情况下(例如防伪系统)ASP.NET核心期望填充IIdentity.Name。但是,我不确定填充它的确切内容以及框架如何使用信息(如果有的话)。
例如,我们可以用途:

  • 用户名(但某些用户使用SSO登录,但没有此用户名)
  • 名+姓(不唯一)
  • 用户识别码
  • 会话ID(因会话而异)
  • 别东西

ASP.NET核心(或一般的.NET,因为IIdentity是一般的.NET概念)期望此属性表示什么?

k5ifujac

k5ifujac1#

我认为IIdentity.Name文档非常清楚:
代表其运行代码的用户的名称。
因此,在您的情况下,这应该是名+姓,唯一性不应该是一个问题(因为这将是一个相当奇怪的期望框架有一个保证名称的唯一性)
也不是下面这句话:
对于未经身份验证的实体,Name通常设置为空字符串(“”),但也可以采用其他值。
这可能是为什么它也包括在像防伪令牌的东西的原因。
同样来自Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core doc
客户端的用户名已经嵌入到生成的令牌中,因此不需要包含此信息。

相关问题