Wenn Sie die ASP.NET-Web-API zusammen mit ASP.NET Identity 1.0 verwenden, können Sie mit dieser Erweiterungsmethode den aktuell angemeldeten Benutzer abrufen:
var id = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);
Aber in Mit ASP.NET Identity 2.0 alpha können Sie den Typ für das ID-Feld überschreiben. Das von Microsoft angegebene Beispiel zeigt, dass dieses Feld als int festgelegt wird. Aber Diese Erweiterungsmethode scheint hardcoded zu sein, um eine Zeichenkette zurückzugeben sogar im Alpha:
Wie können Sie bei Verwendung von ASP.NET Identity 2.0 alpha die (int) Identität des aktuell angemeldeten Benutzers aus einem Web-API-Controller abrufen?
Antworten:
6 für die Antwort № 1Sie müssen die Konvertierung manuell durchführenderzeit, weil Ansprüche Strings eigen sind. Wir könnten eine Art generische Erweiterung wie User.Identity.GetUserId bereitstellen, die versucht, eine Umwandlung von String -> T zu machen, und das ist etwas, das wir in zukünftigen Releases verbessern wollen.
6 für die Antwort № 2
Ich endete mit:
public static class IdentityExtensions {
public static T GetUserId<T>(this IIdentity identity) where T : IConvertible {
return (T)Convert.ChangeType(identity.GetUserId(), typeof(T));
}
}
und nennen es als: GetUserId<int>()