2016-10-25 4 views
-1

Ich brauche den Strom in den Benutzernamen in startup.cs (MVC .NET CORE)Wie Sie den aktuell angemeldeten Benutzernamen in startup.cs von asp.net core erhalten?

Bitte lassen Sie mich angemeldet bekommen, wenn Sie für die gleiche keine Lösungen haben ..

Vielen Dank im Voraus!

+1

Das klingt nicht wie etwas, das praktisch ist:

Sie können Benutzer Informationen aus dem HTTP-Kontext wie folgt retrive. Warum in aller Welt brauchen Sie das, zusätzlich - warum gehen Sie davon aus, dass jemand eingeloggt ist? In der 'Startup.cs' initialisiert der Server buchstäblich Ihre zu bedienende Anwendung, mit der Begründung, dass es keinen" eingeloggten "Benutzer gibt, da dies annehmen würde, dass die App bereits einen Login-Bildschirm ausgegeben hat - was" startup.cs "bedeutet 'lief früher. –

+0

Ich stimme @DavidPine zu und möchte hinzufügen, dass es scheint, dass Sie wenig bis keine Forschung getan haben, bevor Sie diese Frage stellen. – Brad

+0

Zustimmen Sie mit @DavidPine und Brad Aber meine Anforderung ist, muss ich den Benutzernamen erfassen, wenn der Benutzer auf die Anwendung zugreifen. Anwendung verwendet Windows-Authentifizierung. daher gibt es keine Login-Seite. Der Benutzer kann direkt zu jeder Seite der Anwendung gehen, die die URL verwendet (er kann nicht direkt auf der Seite nach Hause kommen). Die allgemeine Seite, die ausgeführt wird, wenn auf die Anwendung in startup.cs zugegriffen wird, daher dachte ich, sie zu verwenden. – Vijay

Antwort

2

Der Zweck der Startup-Klasse ist die Konfiguration des Dependency-Injection-Containers und der Anforderungs-Pipeline. Es ist nicht an eine Anforderung gebunden und wird nur beim Start der Anwendung ausgeführt, daher der Name Startup.

Ein typischer Ort, an dem Sie den angemeldeten Benutzer verwenden würden, ist middleware und controllers.

+0

Vereinbaren Sie mit @Henk. Aber meine Anforderung ist, ich muss den Benutzernamen erfassen, wenn der Benutzer auf die Anwendung zugreifen. Anwendung verwendet Windows-Authentifizierung. daher gibt es keine Login-Seite. Der Benutzer kann direkt zu jeder Seite der Anwendung gehen, die die URL verwendet (er kann nicht direkt auf der Seite nach Hause kommen). Die allgemeine Seite, die ausgeführt wird, wenn auf die Anwendung in startup.cs zugegriffen wird, daher dachte ich, sie zu verwenden. – Vijay

+0

Sonst muss ich den Logging-Code in allen Controllern hinzufügen. Erneut wird es ein weiteres Problem verursachen, dass es mehrere Einträge hinzufügen wird (wenn der Benutzer die Seite aktualisiert und wenn der Benutzer die Seite erneut besucht). Gibt es eine andere Seite als startup.cs, die für diese Anforderung geeignet ist? Bitte vorschlagen – Vijay

0

Middleware ist, was Sie suchen. Es ist sequenziell, wenn Sie Ihre Middleware an die erste Stelle setzen, fängt Ihre Middleware jede von Ihnen gewählte Anfrage ab und kann den Zugriff auf den Rest der App verhindern, wenn Sie dies wünschen.

0

Es muss darauf hingewiesen werden, dass die startup.cs während des gesamten Lebenszyklus der Anwendung verwendet wird. Zum Beispiel in der Configure-Methode - in der Start up.cs - wir behandeln die Anwendungsfehler.

public void Configure(IApplicationBuilder app, IHostingEnvironment  
env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 
     if (env.IsDevelopment()) 
     { 
      app.UseBrowserLink(); 
      app.UseDeveloperExceptionPage(); 
      app.UseDatabaseErrorPage(); 
     } 
     else 
     { 
      app.UseExceptionHandler(errorApp => 
      { 
       errorApp.Run(async context => 
       { 
        context.Response.StatusCode = 500; 
        var error = context.Features.Get<IExceptionHandlerFeature>(); 
        if (error != null) 
        { 
         Exception ex = error.Error; 
         var theUser = context.User.Identity.Name; 
         //send email with user name 
      //do somehting 
        } 
       }); 
      }); 
     } 

    //part omitted for simplicity 
} 
Verwandte Themen