将 id 类型从字符串更改为 int 时,如何在 Web API 中获取当前登录用户的 ID



使用 ASP.NET Web API 以及 ASP.NET 标识 1.0,可以使用此扩展方法来检索当前登录的用户:

var id = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);

但在 ASP.NET 标识 2.0 alpha 中,您可以覆盖 ID 字段的类型。Microsoft给出的示例显示将此字段设置为 int。但是这个扩展方法似乎是硬编码的,即使在 alpha 中也返回一个字符串

http://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityextensions.getuserid(v=vs.111).aspx

使用标识 2.0 alpha 时 ASP.NET 如何从 Web API 控制器中检索当前登录用户的 (int) 标识?

您目前必须自己手动进行转换,因为声明本质上是字符串。 我们可以提供某种通用扩展,例如User.Identity.GetUserId,它尝试从字符串-> T进行转换,这是我们正在考虑在未来版本中改进的内容。

我最终使用了:

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>()

相关内容

  • 没有找到相关文章

最新更新