2016-02-14 12 views
6

मुझे सर्वर से प्राप्त दूरस्थ डेटा के आधार पर मार्ग प्रतिबंधों को कार्यान्वित करने के तरीके पर एक समस्या का सामना करना पड़ रहा है।कोणीयजे और कोणीय-यूआई-राउटर मार्ग अनुमतियाँ

मान लीजिए मैं निम्नलिखित कॉन्फ़िग फ़ाइल है:

angular.module('myApp') 
    .config(['$stateProvider', function($stateProvider) { 

    $stateProvider 
     .state('post', { 
     url: '/post/:post_id', 
     abstract: true, 
     [...] 
    }) 
     .state('post.view', { 
     url: '/view' 
     [...] 
    }) 
     .state('post.edit', { 
     url: '/edit' 
     [...] 
    }) 

}]); 

अपने आवेदन के लिए आवश्यकताएँ हैं:

  • एक पोस्ट एक मालिक (पोस्ट के निर्माता) है और अपने डोमेन सार्वजनिक किया जा सकता है या निजी।

  • यदि डोमेन सार्वजनिक है, तो प्रत्येक उपयोगकर्ता पोस्ट (राज्य post.view दर्ज करना) में सक्षम होगा, और यदि नहीं (डोमेन निजी है), तो केवल स्वामी ही इसे देख पाएंगे।

  • post.edit राज्य केवल मालिक के लिए सुलभ है।

ऐसा करने के लिए, सबसे अच्छा तरीका क्या है?

मैं एक संकल्प वादा करने के बारे में सोच रहा था जो सर्वर (पोस्ट के डोमेन और संवाददाता उपयोगकर्ता भूमिका) से डेटा प्राप्त करता है, आवश्यक चेक करता है और तदनुसार रिटर्न (वादा हल या अस्वीकार) करता है।

लेकिन फिर, यदि उपयोगकर्ता अधिकृत नहीं है तो मैं उपयोगकर्ता को सही स्थिति में कैसे रीडायरेक्ट करूँगा? उदाहरण के लिए, post.edit स्थिति तक पहुंचने का प्रयास करने वाला एक सामान्य उपयोगकर्ता post.view स्थिति पर रीडायरेक्ट किया जाना चाहिए, यदि पोस्ट का डोमेन सार्वजनिक है ... लेकिन यदि पोस्ट का डोमेन निजी है, तो एक अनधिकृत एक्सेस पेज प्रस्तुत किया जाना चाहिए। क्या यह सीधे इस संकल्प पर करने के लिए एक अच्छा तरीका है? विकल्प क्या हैं?

उत्तर

5

मार्ग प्राधिकरण पर इस महान ट्यूटोरियल भूमिकाओं के आधार पर पर एक नज़र डालें:

role based authorization

इसके अलावा इस stackoverflow जवाब पर एक नजर है, यहाँ वहाँ एक ही सशर्त प्रवेश पर आधारित रूटिंग, तो आप उपयोग कर सकते हैं आपके उद्देश्य के लिए भूमिकाओं का तर्क,

Ui-router, routes based on permission

+0

धन्यवाद! ट्यूटोरियल ने वास्तव में मुझे कुछ काम करने में मदद की! लेकिन अब, मुझे एक अलग समस्या है ... मैं तदनुसार उपयोगकर्ता को रीडायरेक्ट करने में सक्षम हूं, लेकिन जब भी एक रीडायरेक्ट होता है, तो कुछ प्रकार की झिलमिलाहट होती है (और अनधिकृत राज्यों के कुछ टेम्पलेट लोड होते हैं)! –

+0

आप लोडिंग आइकन के साथ कुछ ओवरले दिखाकर झिलमिलाहट से बच सकते हैं। –

+0

लोडिंग आइकन के साथ ओवरले जोड़ना 'टू-डू सूची' में है :) मैं 'event.preventDefault() ' –

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