2016-06-26 22 views
3

MVC verwenden 5.Holen Sie sich das AspNetUser von HttpContext.Current.User

Ich bin neu zu Users, Identities und Claims.

Wie bekomme ich die AspNetUser aus der HttpContext.Current.User? Ich weiß, dass ich HttpContext.Current.User.Identity.Name (das ist die E-Mail-Adresse des Benutzers auf meinem System) verwenden und dann die AspNetUser Tabelle für diesen Benutzer treffen kann, gibt es eine bessere Möglichkeit, die AspNetUser aus der HttpContext.Current.User, die ich vermisse? z.B. ist es irgendwo in HttpContext.Current.User schon enthalten?

Ich habe versucht, Google, aber ich finde wirklich keine Antworten auf diese spezielle Frage.

Antwort

1

Der AspNetUser wird nicht in der HttpContext.Current.User-Eigenschaft gespeichert. Ein IPrincipal-Objekt wird von HttpContext.Current.User zurückgegeben, und die einzigen auf IPrincipal angegebenen Member sind IIdentity Identity und bool IsInRole. Die IIdentity-Schnittstelle stellt Ihnen dann die Name-Eigenschaft zur Verfügung, mit der Sie das tatsächliche Benutzerobjekt suchen können.

Wenn Sie nur eine Zeile Code wollen und vollen Zugriff auf das Benutzerobjekt haben, können Sie die AspNetUser mit dem folgenden Code zuzugreifen:

ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); 

Hier finden Sie die folgenden using-Anweisungen benötigen:

using Microsoft.AspNet.Identity; 
using Microsoft.AspNet.Identity.Owin; 

Beachten Sie, dass es wahrscheinlich besser ist, die UserManager-API zu verwenden, wenn Sie dazu in der Lage sind. Sobald Sie Ihr Benutzerobjekt haben, können Sie Änderungen über die Update-Methoden von UserManager bearbeiten und speichern. Viele Änderungen können direkt über die UserManager-Methoden vorgenommen werden. Wenn Sie eine Instanz von Usermanager um sich zu haben, können Sie auch das Objekt Benutzer zugreifen:

ApplicationUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); 
Verwandte Themen