2016-11-24 13 views
5

कोणीय 2 के साथ एसीएल/पेपर-आधारित लागू करने का सबसे अच्छा तरीका क्या है?कोणीय 2 के साथ एसीएल/भूमिका आधारित प्राधिकरण को कैसे कार्यान्वित करें?

मेरा परिदृश्य, संक्षेप में, यह है: भूमिकाएं गतिशील हैं और क्लाइंट कॉन्फ़िगर करने की अनुमतियों पर आधारित हैं जो गतिशील भी हो सकती हैं।

मुझे उपयोगकर्ता को किसी विशेष संसाधन तक पहुंचने से रोकने की आवश्यकता है जिसे वह करने के लिए अधिकृत नहीं है। इसके लिए मैंने कोणीय के गार्ड की अवधारणा का उपयोग करने के बारे में सोचा। CanActivate Guard के साथ मैं यह निर्धारित कर सकता हूं कि उपयोगकर्ता को प्रत्येक मार्ग में दी गई जानकारी के आधार पर उपयोगकर्ता को पास या नहीं देना है या नहीं। यह जानकारी उस संसाधन का नाम होगा जिस पर वह मार्ग संदर्भित करता है। जब मैं गार्ड में गया तो मैं उसकी भूमिका से तुलना कर सकता हूं और देख सकता हूं कि उसकी भूमिका इस सुविधा तक पहुंच रही है और नेविगेशन को अनुमति देना है या नहीं।

लेकिन उस में के साथ दो और समस्याओं में गिर सकती है:

1 - कैसे एक संसाधन वह तक पहुंच है, करने के लिए उपयोगकर्ता रीडायरेक्ट करने के लिए? क्या मुझे रूट फाइलों को सूचीबद्ध करना होगा और किसी ऐसे व्यक्ति की तलाश करनी होगी जो उसकी भूमिका के अनुरूप है और फिर वहां रीडायरेक्ट करे?

2 - उन घटकों को कैसे अक्षम करें जिन्हें वे उन पृष्ठों पर नहीं देख सकते हैं जिन पर यह पहुंच सकता है? उदाहरण के लिए, इसकी लिस्टिंग पृष्ठ एक्स तक पहुंच है लेकिन इसमें कोई नई वस्तु बनाने की पहुंच नहीं है, इसलिए मुझे कुछ बटन बनाएं को हटाने की आवश्यकता है। या बल्कि, divs तत्वों के साथ ऐसा कैसे करें जिसमें कुछ भूमिकाओं के लिए विशिष्ट जानकारी शामिल है लेकिन इसकी भूमिका के लिए नहीं?

मैं जानना चाहता हूं कि कोणीय पारिस्थितिकी तंत्र के भीतर इस परिदृश्य से कैसे पहुंचे।

सुनने के लिए धन्यवाद।

+0

चेतावनी: कोणीय 2 क्लाइंट पर सब कुछ डालता है, इसलिए कोणीय में एक संसाधन "सुरक्षा" (यानी: गुप्त कुंजी, या डी) के बारे में दस्तावेज़ीकरण में एक लेख एटीए ऑब्जेक्ट) संभव नहीं है, आपको डेटा स्रोत पर ऐसा करना होगा। तो आप जो वास्तव में देख रहे हैं वह दृश्य घटकों को छुपा रहा/दिखा रहा है और यहां रीडायरेक्ट कर रहा है, यहां: [छुपाएं मेनू आइटम (बटन, डेटा ऑब्जेक्ट इत्यादि तक बढ़ाया जा सकता है)] (http://stackoverflow.com/questions/36041192/angular2-how-to-hideno-render-the-link-in-the-menu-after-check-access-access) [रीडायरेक्टिंग] (http://stackoverflow.com/questions/32896407/redirect-within-component -angular -2)। हम डेटा स्रोत से एसीएल खींचते हैं। – davmor

+0

मुझे यकीन नहीं है कि आपने अभी तक अपनी समस्या का समाधान निकाला है या नहीं। हालांकि मैं यह ध्यान रखना चाहूंगा कि [छुपा मेनू आइटम] के लिए प्रदान किया गया लिंक @davmor पुराना है, क्योंकि यह पुराने राउटर का उपयोग करता है जिसे बहिष्कृत किया जाता है। वर्तमान राउटर के साथ, सक्रिय डेटा तक इंजेक्शन तक मार्ग डेटा प्राप्त करने का कोई तरीका नहीं है ... उसके बाद आप इसके डेटा तक पहुंच सकते हैं। – 12seconds

उत्तर

1

आप इसके लिए ngx-permissions लाइब्रेरी का उपयोग करने का प्रयास कर सकते हैं। यह, सिंटैक्स, आलसी लोडिंग, अलग आलसी लोडिंग का समर्थन करता है। परियोजना के लिए पुस्तकालय जोड़ें:

@NgModule({ 

imports: [ 
    NgxPermissionsModule.forRoot() 
] 
}) 
export class AppModule { } 

लोड भूमिकाओं

NgxRolesService 
.addRole('ROLE_NAME', ['permissionNameA', 'permissionNameB']) 

NgxRolesService.addRole('Guest',() => { 
    return this.sessionService.checkSession().toPromise(); 
}); 

NgxRolesService.addRole('Guest',() => { 
    return true; 
}); 

टेम्प्लेट में उपयोग

<div *ngxPermissionsOnly="['ADMIN', 'GUEST']"> 
    <div>You can see this text congrats</div> 
</div> 

विस्तार प्रलेखन चेकआउट 0 के लिए अपने गार्ड

const appRoutes: Routes = [ 
{ path: 'home', 
component: HomeComponent, 
canActivate: [NgxPermissionsGuard], 
data: { 
    permissions: { 
    only: ['ADMIN', 'MODERATOR'], 
    except: ['GUEST'] 
    } 
    } 
}, 
]; 

की रक्षा।

0

चेक CASL, वहाँ Vue और Aurelia में लेकिन कोणीय 2 + कार्यान्वयन बहुत समान होना चाहिए के लिए एकीकरण के बारे में लेख हैं

मुख्य विचार यह है कि आप प्रति उपयोगकर्ता क्षमताओं को परिभाषित कर सकते

import { AbilityBuilder } from 'casl' 


// allow to read and create Todo-s for everybody and update for assignees 
export default AbilityBuilder.define(can => { 
    can(['read','create'], 'Todo') 
    can(['update'], 'Todo', { assignee: user.id }) 
}) 

वहाँ भी है map abilities to different roles

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