Wie den aktuellen Benutzer in ASP.NET MVC erhalten
-
06-07-2019 - |
Frage
In einem Formen Modell benutzen ich von den aktuellen angemeldeten Benutzer zu erhalten:
Page.CurrentUser
Wie erhalte ich die aktuellen Benutzer innerhalb einer Controller-Klasse in ASP.NET MVC?
Lösung
Wenn Sie den Benutzer aus der Steuerung erhalten müssen, verwenden Sie die User
Eigenschaft des Controllers. Wenn Sie es aus der Sicht benötigen, würde ich bevölkern, was Sie speziell in den ViewData
benötigen, oder Sie können nur Benutzer nennen, wie ich denke, es ist eine Eigenschaft von ViewPage
.
Andere Tipps
Ich fand, dass User
Werke, das heißt, User.Identity.Name
oder User.IsInRole("Administrator")
.
Versuchen HttpContext.Current.User
.
Public Shared Property Current () As System.Web.HttpContext
Mitglied von System.Web.HttpContextZusammenfassung:
Ruft das System.Web.HttpContext Objekt für die aktuelle HTTP-Anforderung.Rückgabewerte:
Die System.Web.HttpContext für den aktuellen HTTP-Anforderung
Sie können den Namen des Benutzers in ASP.NET MVC4 wie diese:
System.Web.HttpContext.Current.User.Identity.Name
Ich weiß, das wirklich alt ist, aber ich bin nur mit ASP.NET MVC begonnen, so dass ich dachte, dass ich meinen zwei Cent bleiben würde in:
-
Request.IsAuthenticated
sagt Ihnen, ob der Benutzer authentifiziert ist. -
Page.User.Identity
gibt Ihnen die Identität des angemeldeten Benutzers.
ich benutze:
Membership.GetUser().UserName
Ich bin nicht sicher, ob dies in ASP.NET MVC arbeiten, aber es ist ein Versuch wert:)
eingeloggt Benutzername immer: System.Web.HttpContext.Current.User.Identity.Name
Um eine Benutzer-ID zu verweisen erstellt einfache Authentifizierung mithilfe von integrierten in ASP.NET MVC 4 in einem Controller für Filterzwecke (was nützlich ist, wenn Sie Datenbank verwenden erstes und Entity Framework 5 Code-first-Bindungen und Ihre Tabellen zu erzeugen sind so strukturiert, dass ein Fremdschlüssel für die Benutzer-ID verwendet wird), können Sie
WebSecurity.CurrentUserId
, wenn Sie eine using-Anweisung hinzufügen
using System.Web.Security;
Username mit:
User.Identity.Name
Aber wenn Sie nur die ID bekommen, dann können Sie verwenden:
using Microsoft.AspNet.Identity;
So können Sie direkt die Benutzer-ID erhalten:
User.Identity.GetUserId();
Diese Seite könnte sein, was Sie suchen:
Mit Page.User.Identity.Name in MVC3
Sie müssen nur User.Identity.Name
.
Mit System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
Dieses erhält der aktuelle angemeldete Windows Benutzer.
Wir können folgenden Code verwenden, um den Strom in Benutzern in ASP.Net MVC angemeldet zu bekommen:
var user= System.Web.HttpContext.Current.User.Identity.GetUserName();
Auch
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName'
Environment.UserName - Will Display format : 'Username'
Für das, was es wert ist, 3 in ASP.NET MVC Sie können nur Benutzer verwenden, die den Benutzer zurückgibt für die aktuelle Anforderung.
Wenn Sie in Ihrer Login-Seite sind, in LoginUser_LoggedIn Ereignisse zum Beispiel Current.User.Identity.Name einen leeren Wert zurück, so dass Sie yourLoginControlName.UserName Eigenschaft verwenden.
MembershipUser u = Membership.GetUser(LoginUser.UserName);
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
...
currentUser.IsInRole("Operator");
var ticket = FormsAuthentication.Decrypt(
HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value);
if (ticket.Expired)
{
throw new InvalidOperationException("Ticket expired.");
}
IPrincipal user = (System.Security.Principal.IPrincipal) new RolePrincipal(new FormsIdentity(ticket));
Wenn Sie in Active Directory in einem Intranet passieren zu arbeiten, sind hier einige Tipps:
(Windows Server 2012)
alles läuft, die auf einem Web-Server AD sprechen erfordert eine Reihe von Änderungen und Geduld. Seit wann läuft auf einem Webserver gegen lokale IIS / IIS Express es in der Identität des AppPool läuft so, müssen Sie es einrichten verkörpern, wer die Seite trifft.
Wie die aktuellen angemeldeten Benutzer in einem Active Directory erhalten, wenn Ihre ASP.NET MVC-Anwendung auf einem Webserver im Netzwerk ausgeführt wird:
// Find currently logged in user
UserPrincipal adUser = null;
using (HostingEnvironment.Impersonate())
{
var userContext = System.Web.HttpContext.Current.User.Identity;
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["AllowedDomain"], null,
ContextOptions.Negotiate | ContextOptions.SecureSocketLayer);
adUser = UserPrincipal.FindByIdentity(ctx, userContext.Name);
}
//Then work with 'adUser' from here...
Sie müssen wickeln alle Anrufe mit ‚Active Directory-Kontext‘ in dem folgenden zu tun haben, um die Hosting-Umgebung es wirkt, um die AD Informationen zu bekommen:
using (HostingEnvironment.Impersonate()){ ... }
Sie müssen auch impersonate
auf true gesetzt in Ihrer web.config haben:
<system.web>
<identity impersonate="true" />
Sie müssen die Windows-Authentifizierung auf in web.config:
<authentication mode="Windows" />
Sie können folgenden Code verwenden:
Request.LogonUserIdentity.Name;
In Asp.net Mvc Identität 2, können Sie den aktuellen Benutzernamen erhalten von:
var username = System.Web.HttpContext.Current.User.Identity.Name;
In dem IIS-Manager unter Authentifizierung, deaktivieren: 1) anonyme Authentifizierung 2) Formularauthentifizierung
Dann fügen Sie das folgende zu Ihrem Controller zu handhaben im Vergleich zu Server-Bereitstellung zu testen:
string sUserName = null;
string url = Request.Url.ToString();
if (url.Contains("localhost"))
sUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
else
sUserName = User.Identity.Name;