【发布时间】:2014-01-13 18:10:30
【问题描述】:
我有一个关于 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() 等方法和属性是如何实现的?每次执行都会去数据库检索吗?或者它保存在会话中或......?
因为我想创建一个扩展并以与默认情况下或多或少相同的方式工作......
【问题讨论】:
-
如果我没记错的话。 IIdentity 是 system.security.principal 的一方。 IIdentity 的默认实现在 Microsoft.AspNet.Identity 中。所以像 Identity : IIdentity 这样的类在 Microsoft.AspNet.Identity 中。第二个问题,我相信这取决于您的会员资格提供商以及用户信息的来源。 SqlAspnetMembershipProvider 将运行查询以获取用户信息。如果您是 web.config 中的硬编码用户,那么我相信它会在应用程序加载时将其加载到内存中。
-
是的,它们来自数据库
标签: c# extension-methods asp.net-identity