2009-10-05 22 views
7

Tôi không tìm thấy nhiều tài liệu về cách sử dụng Xác thực Windows trong ứng dụng WPF. Tôi sẽ không nghĩ rằng nó sẽ khác biệt so với bất kỳ ứng dụng không phải WPF nào, nhưng có vẻ như là vậy. Tôi muốn đi vào dự án của tôi Properties -> Ứng dụng và đảm bảo rằng Windows xác thực là trên, nhưng tùy chọn đó không có sẵn trong một ứng dụng WPF (như các tài liệu sau xác nhận).Cách sử dụng Xác thực Windows trong WPF?

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

Nếu tôi bỏ qua tất cả điều đó và chỉ cần nhìn vào My.User.Name (VB), nó là sản phẩm nào. Điều này nói với tôi rằng bằng cách nào đó Windows xác thực không được kích hoạt.

Có vẻ như có một khái niệm tôi đang thiếu; ai đó có thể chỉ cho tôi đi đúng hướng?

Kế hoạch của tôi là sử dụng thuộc tính PrincipalPermission để hạn chế quyền truy cập vào một số phần nhất định trong ứng dụng của tôi (hoặc có thể là toàn bộ ứng dụng, bằng cách áp dụng nó cho Application_Startup()).

Trả lời

7

câu trả lời Itowlson là đúng, nhưng cũng có thể, để sử dụng các PrincipalPermissionAttribute trên phương pháp bất kỳ, trước tiên bạn phải làm cho các cửa sổ chính hiệu trưởng hiện tại bằng cách gọi:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) 
5

Lý do điều này không hoạt động trong WPF là các dịch vụ này được triển khai trong lớp WindowsFormsApplicationBase của VB, không được sử dụng trong các ứng dụng WPF. Để thực hiện tương tự:

Gọi WindowsIdentity.GetCurrent() để nhận danh tính người dùng Windows. Bạn có thể lấy tên từ cái này.

Nếu bạn đặc biệt muốn đặt chủ đề chính theo cách tùy chọn Xác thực Windows của Windows, hãy gọi Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()) - đây chính xác là những gì WindowsFormsApplicationBase thực hiện trong nội bộ.

EDIT: Nếu bạn thích API My.User, có vẻ như bạn sẽ có thể thực hiện điều tương tự bằng cách gọi My.User.InitializeWithWindowsUser(). Tôi đã không thử nghiệm này mặc dù.

Các vấn đề liên quan