2014-09-23 6 views
10

हमारे एपीआई सर्वर के रूप में हैपीजेएस का उपयोग करना चाहते हैं। हमें बढ़िया उपयोगकर्ता अनुमतियों की आवश्यकता है, उदा। "उपयोगकर्ता ए फ़ील्ड बी संपादित कर सकता है" "उपयोगकर्ता सी किसी दिए गए मॉडल/संसाधन के लिए फ़ील्ड डी" देख सकता है।क्या अच्छी तरह से अनाज वाली एसीएल/उपयोगकर्ता अनुमतियों के लिए हैपी के साथ एक लाइब्रेरी संगत है?

इससे पहले कि हम कुछ बनाना शुरू करें, मैं यह देखने के लिए देख रहा हूं कि ऐसा कुछ पहले से ही किया गया है जो हैपी के साथ संगत है।

+0

क्या आपको कुछ मिला? – srlm

+0

नहीं, यह परियोजना इस पल के लिए चालू है। किसी भी निष्कर्ष पर वापस पोस्ट करेंगे। – Adamski

उत्तर

3

मैं हाल ही में हैपीज के लिए एक एसीएल परियोजना पर काम कर रहा हूं। यह आपको एक अच्छी शुरुआत मिलनी चाहिए। https://www.npmjs.org/package/hapi-authorization

+0

बस प्लगइन की जांच की, और मेरे पास एक सवाल है - क्या आप इसे इस तरह कार्यान्वित कर सकते हैं कि उपयोगकर्ता के पास कई भूमिकाएं हो सकती हैं, जो पदानुक्रमित नहीं हैं, लेकिन एक ही स्तर पर, एप्लिकेशन के विभिन्न हिस्सों तक पहुंच की इजाजत दे रही है (मान लीजिए, manages_users , और manages_products)? आप एक धारणा प्राप्त कर सकते हैं कि यदि उपयोगकर्ता ऑब्जेक्ट में .role प्रॉपर्टी है, तो यह एक ही भूमिका है; यदि इसमें .roles है, तो आप एक सरणी की अपेक्षा करते हैं और उस – zappan

+0

के विरुद्ध जांचें यह कार्यक्षमता पहले से मौजूद है और डिफ़ॉल्ट है। https://github.com/toymachiner62/hapi-authorization#plugin-config। यदि आपके कोई प्रश्न हैं तो कृपया SO पर पोस्ट करने के बजाय जिथब मुद्दे सबमिट करें। – Catfish

4

मैंने अभी एक लेख पढ़ा है जहां बिल्ड-इन स्कोप का उपयोग करके एसीएल अनुमतियां मान्य हैं।

यहाँ उल्लेख लेख के लिए लिंक है:

{ 
    "username": "han", 
    "scope": ["door-trash-compactor"] 
} 

: https://blog.andyet.com/2015/06/16/harnessing-hapi-scopes/

और जल्दी से फिर से शुरू करने (ऊपर के लिंक से उदाहरण का उपयोग), आप एक उपयोगकर्ता उद्देश्य यह है कि तरह तो लग रहा है मिल इस उपयोगकर्ता के लिए जो कुछ भी आपके एसीएल का समर्थन कर रहा है, उसके द्वारा उत्पन्न किया जा सकता है।

server.route({ 
    method: 'GET', 
    route: '/doors/{door_id}', 
    config: { 
     handler: function (request, reply) { 
      reply(request.params.door_id ' door is closed'); 
     }, 
     auth: { 
      scope: ['door-{params.door_id}'] 
     } 
    } 
}); 

गुंजाइश door-{params.door_id}door-trash-compactor जो तब सत्यापित किया जाएगा, करने के लिए अनुवाद किया जाएगा: इस मामले में आप आईडी trash-compactor के साथ संसाधन door कि इतने तरह जाँच की जा सकती है। ट्रैश कॉम्पैक्टर दरवाजे के लिए हान का अनुरोध मान्य होगा और उसे door is closed संदेश मिलेगा।

ब्लॉग पोस्ट अच्छी तरह से लिखा गया है (इस सारांश के बाद बहुत बेहतर है) और बेहतर विवरण में इसका वर्णन करता है - पढ़ने की अनुशंसा करेगा।

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