2011-10-20 3 views
9

Utworzono witrynę. To jest strona wewnętrzna. To jest strona .NET 4.0. Chciałbym pobrać nazwę użytkownika za pomocą HttpContext.Current.User.Identity.Name osoby przeglądającej witrynę. Nie ma strony logowania, ponieważ jest wewnętrzna. Nie jestem pewien, czego mi brakuje. Czy muszę następujących w moim webconfig:Dlaczego HttpContext.Current.User.Identity.Name zwraca pusty

<authentication mode="Windows"></authentication> 
<identity impersonate="true"/> 
<authorization> 
    <allow users="?"/> 
</authorization> 

i tak:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 

+0

Nie otrzymujesz nazw logowania użytkowników, którzy chcą pozostać anonimowi bez wymuszania autoryzacji - jeśli to jest to, co masz nadzieję zrobić? –

Odpowiedz

14

Wchodzi się pusty, gdy Nieuwierzytelniona. Można to sprawdzić, wykonując również:

HttpContext.Current.User.Identity.IsAuthenticated 

Sprawdź poziom uwierzytelniania w IIS, czy jest ustawiony tak, aby włączyć również uwierzytelnianie systemu Windows?

4

Tak, trzeba zrobić, przynajmniej

<authentication mode="Windows"></authentication> 

część jest wymagane, jeżeli używasz Zintegrowanego uwierzytelniania systemu Windows.

Po tym, powinieneś być w stanie chwycić nazwę użytkownika osoby zalogowany

Nie, nie trzeba.

<validation validateIntegratedModeConfiguration="false" /> 
+0

Zmieniłem mój webconfig tak, aby miał tylko , ale nadal nie ma nazwy użytkownika. Przeglądając witrynę z mojego komputera, spodziewam się zobaczyć moją nazwę użytkownika (tego użytkownika, z którym się zalogowałem). Nie jestem pewien, czego mi brakuje. – obautista

+2

Czy skonfigurowałeś zintegrowane uwierzytelnianie systemu Windows na poziomie aplikacji w IIS? – Icarus

8

W tym przypadku wyłącz anonimowy dostęp i włącz zintegrowane zabezpieczenia systemu Windows dla aplikacji internetowej.

2

W IIS przejdź do witryny \ Default Website \ [Twoja witryna].

Wybierz opcję Uwierzytelnianie i wyłącz uwierzytelnianie anonimowe.

1

W moim przypadku usunięcie linii <remove name="FormsAuthentication" /> z web.config pomaga.

Mam również <authentication mode="Forms" /> w sekcji <system.web>.