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?

War es hilfreich?

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.HttpContext

     

Zusammenfassung:
  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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top