2009-10-05 30 views
7

Nie znajduję wiele dokumentacji na temat korzystania z uwierzytelniania systemu Windows w aplikacji WPF. Nie sądziłbym, że będzie to coś innego niż w jakiejkolwiek aplikacji nieobsługującej WPF, ale wygląda na to, że tak jest. Chcę przejść do mojego projektu Właściwości -> Aplikacja i upewnić się, że Uwierzytelnianie Windows jest włączone, ale ta opcja nie jest dostępna w aplikacji WPF (jak potwierdza poniższy dokument).Jak korzystać z uwierzytelniania systemu Windows w WPF?

http://msdn.microsoft.com/en-us/library/tzdks800.aspx

Gdybym ignorować wszystko, a wystarczy spojrzeć na My.User.Name (Vb), jest pusty. To mówi mi, że w jakiś sposób Uwierzytelnianie Windows nie jest włączone.

Wydaje się, że istnieje pojęcie, którego mi brakuje; czy ktoś może wskazać mi właściwy kierunek?

Mój plan polega na użyciu atrybutu PrincipalPermission, aby ograniczyć dostęp do niektórych części mojej aplikacji (lub całej aplikacji, poprzez zastosowanie jej do Application_Startup()).

Odpowiedz

7

odpowiedź Itowlson był poprawny, ale również w celu wykorzystania PrincipalPermissionAttribute na dowolną metodą, trzeba najpierw dokonać głównego okna obecny główny dzwoniąc:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) 
5

Powodem tego nie działa w WPF jest to, że te usługi są realizowane w klasie WindowsFormsApplicationBase VB, który nie jest używany w aplikacjach WPF. Aby zrobić to samo:

Zadzwoń pod numer WindowsIdentity.GetCurrent(), aby uzyskać identyfikator użytkownika systemu Windows. Możesz uzyskać nazwę od tego.

Jeśli chcesz ustawić wątek główny tak, jak robi to opcja uwierzytelniania Windows VB, zadzwoń pod numer Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()) - dokładnie to robi wewnętrznie WindowsFormsApplicationBase.

EDIT: Jeśli wolisz API My.User, wygląda na to, powinieneś być w stanie zrobić to samo, wywołując My.User.InitializeWithWindowsUser(). Nie testowałem tego jednak.

Powiązane problemy