我对IIdentity身份有疑问,通常在网络应用中你可以说:
HttpContext.Current.User.Identity.
它有几个你可以轻松检索的属性,非常方便。
所以我有两个问题:
1)我正在使用ASP.NET Identity(不是成员资格),但当我尝试扩展HttpContext.Current.User.Identity
public static int GetUserAge(this IIdentity identity){}
要导入:我必须使用的IIdentity身份,使用System.Security.Principal;,但它与Microsoft.AspNet.Identity在同一个包中吗?
2)默认情况下,方法和属性,如User.Identity.Name / User.Identity.Id,/ User.Identity.GerUserId()等,它们是如何实现的?每次执行都要去数据库检索它吗?或者节省会话或......?
因为我想创建一个扩展程序,其工作方式与默认工作方式大致相同......
答案 0 :(得分:0)
所以AspNet.Identity只是添加扩展方法,它们将语法糖隐藏到一个ClaimsIdentity,并将两个声明类型映射到辅助方法getter。
GetUserName() => ClaimTypes.Name
GetUserId() => ClaimTypes.NameIdentifier.