C# MVC-Webanwendung mit Windows-Authentication

Karbe

Rear Admiral
Registriert
Feb. 2008
Beiträge
5.399
Hi,
ich hab eine MVC-Webanwendung mit Windows-Authentication erstellt.

Ich würde den Zugriff gerne an eine bestimmte ACL/OU im Active Directory knüpfen.
In der View kann ich auf das Benutzerobjekt ohne Probleme zugreifen:
HTML:
@User.Identity.Name;

Im Controller dagegen bleibt das Objekt leer/null:
C#:
HttpContext.User.Identity.Name;

Weis jemand Rat?
 
Ins Blaue geraten empfehle ich die Property HttpContext.Current zu nutzen um auf den aktuellen Context zuzugreifen. Ist aber wirklich nur geraten.

C#:
HttpContext.Current.User.Identity.Name;

EDIT: Wo rufst du es im Controller eigentlich auf?
 
Zuletzt bearbeitet:
In einer Post-Methode, kampagnen_import ist ein EF-Model:

C#:
 if (ModelState.IsValid)
            {
                kampagnen_import.created = DateTime.Now;
                kampagnen_import.created_by = HttpContext.User.Identity.Name;

                db.kampagnen_import.Add(kampagnen_import);
                db.SaveChanges();

                return RedirectToAction("Index");
            }

Die Klasse HttpContext.Current kann ich gar nicht aufrufen:
'HttpContextBase' does not contain a definition for 'Current' and no accessible extension method 'Current' accepting a first argument of type 'HttpContextBase' could be found (are you missing a using directive or an assembly reference?)
(net48, Assembly System.Web 4.0.0.0)

Grüße
 
Also ich habe hier mal ein Minimal-Beispiel hochgeladen: https://github.com/marcOcram/WebWindowsAuthentication
Damit funktioniert es als GET und als POST. Eventuell probierst du es damit mal aus und schaust was bei dir anders ist.

Code:
IsPost: False
Hallo xxx\marcocram (aus der View)
Hallo xxx\marcocram (aus dem Controller)
Hallo xxx\marcocram (aus dem Controller / HttpContext)

Die Property Current gibt es nicht, weil man nicht auf HttpContext sondern auf HttpContextBase zugreift.
 
Hm, im Grunde ist es bei mir genauso, in der View wird der Benutzername ja auch ausgegeben.
Nur beim Zurückschreiben ist das Objekt dann leer.

Grüße
 
Machst du den POST über eine HTML Form oder irgendwie anders (JavaScript)? Vielleicht liegt da der Hund begraben? Kannst du das Beispiel in deine Applikation testweise einpflegen und prüfen?

Diese Einstellungen hast du in den Eigenschaften des Projektes gesetzt?
1597996293067.png
 
Kurz in eines unserer Projekte geguckt: In den POSTs wird dort User.Identity.Name für das Logging verwendet. Das ist eine Property des System.Web.Mvc.Controller
 
Hm okay, dann muss muss das Problem wohl beim EF-Mapping liegen..
 
Da lag tatsächlich der Hund begraben.. Wald und Bäume und so..
 
Zurück
Oben