2009-10-05 13 views
7

मुझे डब्ल्यूपीएफ ऐप में विंडोज प्रमाणीकरण का उपयोग करने के तरीके पर ज्यादा दस्तावेज नहीं मिल रहा है। मैंने सोचा नहीं होगा कि यह किसी भी गैर-डब्ल्यूपीएफ ऐप से अलग होगा, लेकिन ऐसा लगता है कि यह है। मैं अपने प्रोजेक्ट प्रॉपर्टीज -> एप्लिकेशन में जाना चाहता हूं और यह सुनिश्चित करता हूं कि विंडोज प्रमाणीकरण चालू है, लेकिन यह विकल्प एक WPF ऐप में उपलब्ध नहीं है (जैसा कि निम्न दस्तावेज़ पुष्टि करता है)।डब्ल्यूपीएफ में विंडोज प्रमाणीकरण का उपयोग कैसे करें?

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

अगर मैं वह सब पर ध्यान न दें और सिर्फ My.User.Name (VB) को देखो, यह खाली है। यह मुझे बताता है कि किसी भी तरह से विंडोज प्रमाणीकरण सक्षम नहीं है।

ऐसा लगता है कि एक अवधारणा है जो मुझे याद आ रही है; क्या कोई मुझे सही दिशा बतला सकता है?

मेरी योजना मेरे ऐप के कुछ हिस्सों तक पहुंच प्रतिबंधित करने के लिए प्रिंसिपलप्रमिशन विशेषता का उपयोग करना है (या शायद संपूर्ण ऐप, इसे एप्लिकेशन_स्टार्टअप() पर लागू करके)।

उत्तर

7

Itowlson के उत्तर सही था, लेकिन यह भी, किसी भी विधि पर PrincipalPermissionAttribute का उपयोग करने के लिए, आपको पहले फोन करके वर्तमान प्रिंसिपल खिड़कियों प्रिंसिपल करना है:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) 
5

यह डब्ल्यूपीएफ में काम नहीं करने का कारण यह है कि ये सेवाएं वीबी के विंडोजफॉर्म एप्प्लिकेशंसबेस क्लास में लागू की जाती हैं, जिसका उपयोग WPF अनुप्रयोगों में नहीं किया जाता है। खुद को एक ही काम करने के लिए:

विंडोज उपयोगकर्ता पहचान प्राप्त करने के लिए WindowsIdentity.GetCurrent() पर कॉल करें। आप इसका नाम प्राप्त कर सकते हैं।

यदि आप विशेष रूप से थ्रेड प्रिंसिपल को वीबी विंडोज प्रमाणीकरण विकल्प के रूप में सेट करना चाहते हैं, तो Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()) पर कॉल करें - यह वही है जो WindowsFormsAplicationBase आंतरिक रूप से करता है।

संपादित करें: यदि आप My.User API पसंद करते हैं, तो ऐसा लगता है कि आपको My.User.InitializeWithWindowsUser() पर कॉल करके वही काम करने में सक्षम होना चाहिए। हालांकि मैंने इसका परीक्षण नहीं किया है।

संबंधित मुद्दे