使用ASP.NET Web API和ASP.NET Identity 1.0,您可以使用此扩展方法来检索当前已登录的用户:
var id = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);
但是在 ASP.NET identity 2.0 alpha中,您可以覆盖ID字段的类型。 Microsoft提供的示例显示将此字段设置为int。但这个扩展方法似乎是硬编码,即使在alpha中也会返回一个字符串:
使用ASP.NET Identity 2.0 alpha时,如何从Web API控制器中检索当前登录用户的(int)标识?
答案 0 :(得分:6)
您必须自己手动进行转换,因为声明本质上是字符串。我们可以提供某种通用扩展,例如User.Identity.GetUserId,它尝试从字符串进行转换 - > T和我们正在考虑在未来版本中进行改进。
答案 1 :(得分:6)
我最终使用了:
public static class IdentityExtensions {
public static T GetUserId<T>(this IIdentity identity) where T : IConvertible {
return (T)Convert.ChangeType(identity.GetUserId(), typeof(T));
}
}
并将其称为:GetUserId<int>()