2011-06-28 11 views
5

आपको लगता है कि यह प्रश्न मेटा एसओ पर होना चाहिए, लेकिन यह नहीं होना चाहिए, क्योंकि यह मूल रूप से एएसपी.NET एमवीसी के बारे में है, लेकिन जिस तकनीक को मैं कार्यान्वित करना चाहता हूं वह पहले ही एसओ में लागू हो चुका है।एसओ की तरह प्रतिष्ठा-आधारित उपयोगकर्ता अनुमतियों को कैसे कार्यान्वित करें?

मैं चाहता हूं कि उपयोगकर्ताओं को सत्ता मिल जाए, जबकि वे स्टैक ओवरव्लो में जिस तरीके से करते हैं, उतना ही प्रतिष्ठा प्राप्त करें, और मेरा सवाल यह है कि उपयोगकर्ता प्रमाणीकरण प्रणाली को कैसे डिजाइन किया जाए? क्या हम अंतर्निर्मित फॉर्म प्रमाणीकरण पर भरोसा कर सकते हैं? और उपयोगकर्ता के लिए दिखाए जाने वाले लिंक (प्रतिष्ठा के आधार पर) का प्रबंधन कैसे करें और क्या नहीं है?

मुझे लगता है कि हम यहां भूमिकाओं का उपयोग नहीं कर सकते हैं, इसलिए हम 1000 भूमिकाओं के साथ खत्म नहीं होते हैं, है ना? लेकिन हम केवल 2 भूमिकाएं (व्यवस्थापक, उपयोगकर्ता) का उपयोग कर सकते हैं।

[संपादित करें]:
मुझे लगता है कि नहीं बल्कि फार्म प्रमाणीकरण के आधार पर की तुलना में मेरे अपने उपयोगकर्ता तालिका बनाने के लिए बेहतर है, और इसलिए मैं उन मेज पर प्रतिष्ठा क्षेत्र (और अन्य क्षेत्रों) जोड़ सकते हैं और यह ट्रैक कर सकते हैं जैसा कि आपने कहा। बीटीडब्लू @ मार्टिन, मुझे if के बारे में पता है, जिसके बारे में आपने बात की थी, लेकिन मेरे प्रश्न ऐसे मामलों को संभालने का एक शानदार तरीका है?

+0

मुझे लगता है कि एसओ आंतरिक रूप से "प्रतिष्ठा अनुमतियों" को संभालता है और हर सामान्य उपयोगकर्ता सिर्फ "उपयोगकर्ता" है, लेकिन मैंने कभी स्रोत नहीं देखा है, जो कि एक डब्ल्यूएजी है। –

+0

क्या आप "प्रमाणीकरण" और "प्राधिकरण" को भ्रमित कर रहे हैं? StackExchange प्रमाणीकरण के लिए OpenID का उपयोग करता है, जो आपके पास अनुमतियों को निर्धारित नहीं करता है। –

+0

नहीं, मैं नहीं हूं, यह सिर्फ इतना है कि मैं ऐसी प्रणाली खोजना चाहता हूं जो रखरखाव/भविष्य के विस्तार की आसानी के लिए दोनों को बर्दाश्त कर सके। –

उत्तर

5

आप एक साधारण नियम प्रणाली बना सकते हैं। प्रत्येक उपयोगकर्ता के पास उनके साथ जुड़े प्रतिष्ठा स्कोर होते हैं। फिर, एक action filter आप अपने सिस्टम में कार्य करने के लिए उपयोग को नियंत्रित कर सकता है का उपयोग करते हुए:

public class SomeController : IController 
{ 
    ... 
    [ReputationNeeded(Reputations.CanVoteDown)] // your custom action filter 
    [HttpPost] 
    public ActionResult VoteDown(...) 
    { /* */ } 
} 

गुड लक!

+0

+1 आपको बहुत बहुत धन्यवाद, यह मेरी इच्छित चीजों का हिस्सा है। –

+0

एक और सवाल कृपया, कार्रवाई फ़िल्टर वर्ग के भीतर उपयोगकर्ता ऑब्जेक्ट (और तब प्रतिष्ठा) तक कैसे पहुंचे? मेरा मतलब है कि यह संदर्भ का हिस्सा नहीं है, इस बारे में कैसे काम करना है? –

+1

मुझे लगता है कि कई तरीके हैं। यहां पर चर्चा की गई है: http://stackoverflow.com/questions/5758611/mvc3-action-filter-using-डेटा-ef-4-1-dbcontext-ninject। –

3

उपयोगकर्ता की प्रतिष्ठा का प्रबंधन, और उसके पास क्या पहुंच है (प्रतिष्ठा द्वारा मापा गया), प्रमाणीकरण तंत्र, आईएमएचओ का हिस्सा नहीं होना चाहिए।

वेब पर आप मुख्य रूप से प्रपत्र प्रमाणीकरण का उपयोग करते हैं, और एक बार प्रमाणित होने पर यह उपयोगकर्ता पर प्रतिष्ठा लागू करने के लिए आपके ऊपर निर्भर करता है और यदि उपयोगकर्ता के पास पर्याप्त प्रतिष्ठा नहीं है तो क्षेत्र बंद कर दें।

मैं इस सुविधा को प्रमाणीकरण प्रणाली का हिस्सा नहीं बनाऊंगा। मैं बस उपयोगकर्ताओं को प्रमाणित करने देता हूं और फिर किसी भी दिए गए उपयोगकर्ता के लिए उपयुक्त विचार प्रस्तुत करता हूं।

प्रतिष्ठा के आधार पर अपने मुख्य नेविगेशन परिवर्तनों को कहें। आप नेविगेशन बार के आइटम लपेटते हैं जिसके लिए 1000 से अधिक प्रतिनिधि की आवश्यकता होती है। if कथन के साथ, और यदि उपयोगकर्ता के पास 1000 से कम है तो इसे प्रदर्शित न करें।

+0

+1 जानकारीपूर्ण। –

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