2010-01-25 25 views

Odpowiedz

12

Możesz użyć HttpContext.Current.User.Identity.Name, jeśli skonfigurujesz stronę, aby używać Windows Authentication. Wiele przeglądarek przekazuje nazwę użytkownika w sposób przezroczysty.

+0

wydaje się, że z firefox wyświetla monit o podanie nazwy użytkownika/pwd, mimo że IE nie wymaga tego. . wszelkie pomysły, dlaczego tak się dzieje – leora

+0

Dan Diplo - jakieś pomysły? – leora

+0

FireFox domyślnie nie przekazuje nazwy użytkownika. Można go jednak uruchomić - zobacz http://markmonica.com/2007/11/20/firefox-and-integrated-windows-authentication/ –

0

Po skonfigurowaniu usług IIS do korzystania z uwierzytelniania systemu Windows i gdy witryna znajduje się w strefie intranetowej dla klientów, logowanie odbywa się automatycznie bez żadnych monitów.

1

W jakiej wersji systemu Windows działa ta aplikacja mvc?

można spróbować następujących czynności:

  • Użyj Menedżera usług IIS, aby wyłączyć dostęp anonimowy do witryny, i upewnij się, trawienia i/lub uwierzytelniania systemu Windows jest włączona.
  • Zmiana pliku web.config aplikacji mvc na Uwierzytelnianie systemu Windows
  • Dostęp do nazwy logowania w kontrolerze przy użyciu User.Identity.Name.

Czy to wystarczy?

1

Przejdź do pliku web.config aplikacji (pamiętaj, że to główny, a nie pod Web.Config Obejrzane), uwaga na <authentication mode="Forms"> jeśli go zobaczyć, a następnie dodać linie tak:

<authentication mode="Windows"/> 
<identity impersonate="true"/> 
<authorization> 
    <allow roles="DOMAIN\PersonnelGroup" /> 
    <allow users="DOMAIN\jdoe"/> 
    <deny users="*"/> 
</authorization> 

Nie musisz dodawać sekcji <authorization>, ale jest to przydatne, jeśli chcesz zezwolić na dostęp określonym grupom i użytkownikom, i odmówić wszystkim innym. Podczas korzystania z IE dane uwierzytelniające są przekazywane automatycznie. Można to sprawdzić przez wydrukowanie nazwy użytkownika w widoku:

@HttpContext.Current.User.Identity.Name 

Po otwarciu witryny za pomocą przeglądarki Firefox lub innej przeglądarki oprócz IE, to poprosi o podanie nazwy użytkownika i hasła, ponieważ nie jest automatycznie przechodząc wzdłuż mandatów (chociaż najwyraźniej możesz przekonać Firefoksa do przekazywania poświadczeń, o czym wspomniał już Dan Diplo).

Jeśli chcesz przekazać te poświadczenia na inny serwer, taki jak SQLServer, staje się bardziej ból głowy z mojego doświadczenia, ponieważ masz problem z podwójnym hop. Jedynym sposobem, jaki znam, jest hostowanie usług IIS i SqlServer na tym samym serwerze lub logowanie do intranetu, aby mieć nazwę użytkownika i hasło do przekazywania do SQLServer.

1

var s = HttpContext.User.Identity.Name;

Powiązane problemy