/ / Wenn ID-Typ von Zeichenfolge in Int geändert wird, wie ID des aktuellen signierten Benutzers in Web API erhalten? ASP.net - ASP.NET ASP.NET ASP.NET, ASP.NET, ASP.NET, ASP.NET, ASP.net, ASP.net

Wenn Sie den ID-Typ von "String" in "Int" ändern, wie erhalten Sie die ID des aktuell angemeldeten Benutzers in der Web-API? ASP.net - ASP.NET ASP.NET ASP.NET, ASP.NET, ASP.NET, ASP.NET, ASP.net, ASP.net

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:

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

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 № 1

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