2009-05-04 6 views

उत्तर

2

आप जेनेरिक इडेंटिटी का उपयोग पहचान के ठोस कार्यान्वयन के रूप में कर सकते हैं जहां आप वर्तमान उपयोगकर्ता के बारे में विवरण, प्रोग्रामेटिक रूप से विवरण देना चाहते हैं। यदि आपने अन्य चैनलों के माध्यम से उपयोगकर्ता को पहचान लिया है और प्रमाणित किया है तो बहुत अच्छा है।

+1

के साथ समझाते हैं, मैं ऐसा करने की कोशिश कर रहा हूं लेकिन प्रोग्रामिक रूप से 'जेनरेटेड' से प्राप्त होने वाली मेरी कक्षा में 'आईएस प्रमाणीकृत' संपत्ति सेट नहीं कर सकता। मुझे त्रुटि मिलती है: 'प्रॉपर्टी या इंडेक्सर' सिस्टम। सुरक्षा। क्लाइम्स। क्लाइम्स इडेंटिटी। आईएस प्रमाणीकृत 'को असाइन नहीं किया जा सकता है - इसे केवल पढ़ा जाता है' कोई विचार? – atconway

+1

मैंने अपनी कक्षा को 'IIdentity' को लागू करने के द्वारा इसे ठीक करने के लिए इसे समाप्त कर दिया और उन गुणों का अपना कार्यान्वयन प्रदान किया। – atconway

45

GenericIdentity और GenericPrincipal उपयोगकर्ता को "प्रिंसिपल" के रूप में वर्णित करने का सबसे आसान तरीका है। इस कार्यान्वयन-अनजान सुरक्षा एक आवेदन में जाँच के लिए इस्तेमाल किया जा सकता - अर्थात् यदि उपयोगकर्ता "उपयोगकर्ता" और "व्यवस्थापक" अनुमति के साथ के रूप में "फ्रेड" में लॉग:

string[] roles = { "User", "Admin" }; 
    Thread.CurrentPrincipal = new GenericPrincipal(
     new GenericIdentity("Fred"), roles); 

आप के बिंदु पर यह कर सकता है या तो के माध्यम से - एक WinForm के लिए क्लाइंट प्रवेश, या कोई विशिष्ट बिंदुओं को पता है कैसे उन अनुमतियों नियंत्रित किया जाता है बिना WCF, ASP.NET, आदि

फिर बाद में कोड में यह करने के लिए, यह है कि अनुमति की जांच कर सकते हैं IsInRole, या घोषणात्मक रूप से:

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")] 
void SomeAdminFunction() { } 

कुछ उपयोगी उपयोगिता यहाँ कोड प्रिंसिपल/पहचान के आसपास अशक्त-सुरक्षित रैपर है:

row.UpdatedBy = MyUtilityClass.GetUsername(); 

GenericPrincipal के साधारण मामलों के लिए उपयोगी है:

public static string GetUsername() { 
    IPrincipal principal = Thread.CurrentPrincipal; 
    IIdentity identity = principal == null ? null : principal.Identity; 
    return identity == null ? null : identity.Name; 
} 
public static bool IsInRole(string role) { 
    IPrincipal principal = Thread.CurrentPrincipal; 
    return principal == null ? false : principal.IsInRole(role); 
} 

तो फिर आप अपने दाल में कुछ लेखा परीक्षा कोड हो सकता है एक सादा उपयोगकर्ता नाम और ज्ञात भूमिकाओं का सेट। अधिक परिष्कृत प्रिंसिपल कार्यान्वयन, उदाहरण के लिए, "मांग पर" पहुंच जांच कर सकते हैं - यानी जब तक आप "फू" भूमिका के बारे में नहीं पूछते हैं, तब तक यह पता नहीं चलता है (यह एक वेब-सेवा, डेटाबेस, सक्रिय से बात करके - निर्देशिका, आदि) और भविष्य के उपयोग के लिए परिणाम कैश। यह तब उपयोगी होता है जब संभावित भूमिकाओं की सूची बड़ी होती है, और आम तौर पर वास्तविकता में पूछे जाने वाले भूमिकाओं की संख्या छोटी है।

आप अतिरिक्त पहचान जानकारी स्टोर करने के लिए प्रिंसिपल का भी उपयोग कर सकते हैं जिसे केवल कुछ संदर्भों में आवश्यक है - उदाहरण के लिए, एक सुरक्षा टोकन। यह देखने के लिए कि क्या यह अतिरिक्त डेटा का समर्थन करता है, कॉलर as के साथ प्रिंसिपल का परीक्षण कर सकते हैं।

"प्रिंसिपल" का उपयोग करना उपयोगी है क्योंकि आपका तर्क प्रसंस्करण कोड पहचान के बारे में बात कर सकता है, यह जानने के बिना कि यह Winforms, ASP.NET, WCF, Windows सेवा आदि है - यह सार है। इसके अतिरिक्त, कुछ तृतीय पक्ष कोड प्रिंसिपल से भी बात करेंगे।

एक और उदाहरण के रूप में - मैं कुछ example code here पता चलता है कि कैसे (- जो वी.एस. में संपत्ति ग्रिड में अतिरिक्त प्रविष्टियों डालता है एक IExtenderProvider के माध्यम से) डिजाइनर के माध्यम से WinForm नियंत्रण के लिए उपयोग को नियंत्रित करने के प्राचार्य उपयोग करने के लिए लिखा था।

+0

प्रिंसिपलप्रमिशन विशेषता कैसे काम करती है? यदि थ्रेड। कंटेंट प्रिंसिपल में विधि या कुछ कहने पर सही भूमिका नहीं होती है तो क्या अपवाद उठाया जाएगा? – Svish

+1

@ स्विस - बिल्कुल ('सुरक्षा अपवाद '); यह कुछ (कुछ) विशेषताओं में से एक है जो रनटाइम सीधे कार्य करता है। –

0

जेनेरिक इडेंटिटी क्लास: - जेनेरिक इडेंटिटी क्लास द्वितीय इंटरफ़ेस इंटरफ़ेस लागू करता है।यह एप्लिकेशन द्वारा परिभाषित कस्टम प्रमाणीकरण विधि के आधार पर उपयोगकर्ता की पहचान का प्रतिनिधित्व करता है। जेनेरिक प्रिंसिपल क्लास: - जेनेरिक प्रिंसिपल क्लास आईप्रिनियल इंटरफेस लागू करता है। यह उन उपयोगकर्ताओं और भूमिकाओं का प्रतिनिधित्व करता है जो विंडोज उपयोगकर्ताओं और उनकी भूमिकाओं से स्वतंत्र हैं। अनिवार्य रूप से, जेनेरिक प्रिंसिपल एप्लिकेशन प्रमाणीकरण और प्राधिकरण के लिए एक सरल समाधान है।

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