2012-12-15 10 views
5

मेरे पास एक इंटरेक्टिव एम्बर ऐप है जिसमें कई विकल्प हैं जो केवल साइन इन उपयोगकर्ताओं के लिए उपलब्ध हैं। उदाहरण के लिए पदों की एक सूची हो सकती है, और उसके बाद मेरी पोस्ट पर एक और लिंक है, जो उपयोगकर्ता के लिए प्रासंगिक है।मुझे अपने Ember.js एप्लिकेशन में उपयोगकर्ता की लॉगिन स्थिति कैसे पास करनी चाहिए?

दो मुद्दों है कि मेरे मन के लिए आते हैं के होते हैं:

  • मैं कैसे एप्लिकेशन यदि एक उपयोगकर्ता के प्रवेश बताऊँ अपने डेटा, और शायद?
  • मैं अपने लॉगिन स्थिति के आधार पर विशिष्ट विशेषताओं और वस्तुओं को कैसे छिपा सकता हूं?

क्या इसके पास आने के लिए कोई सर्वोत्तम अभ्यास है? मुझे लगता है कि लॉगिन प्रक्रिया स्वयं जटिल नहीं होगी, लेकिन if logged_in? do_x else do_y मेरे लिए एक बड़ा अज्ञात है। मुझे वैश्विक उपयोगकर्ता राज्य कहां स्टोर करना चाहिए?

उत्तर

2

आप एंबर राउटर का उपयोग कर रहे हैं, तो फिर मेरे सुझाव वास्तुकार को यह

LoginController की तरह एक समाधान होगा

App.LoginController = Ember.Controller.extend({ 
    login: function(params){ /* Your logic here */ }, 
    logout: function(params){ /* Your logic here */}, 

    user_data_hash: { first_name: "The", last_name: "Hobbit"}, 

    is_logged_in: (function() { 
     /* do some logic and return true or false */ 
    }).property('some_item_on_user_data_hash') 

    just_logged_in: (function() { 
     /* do some logic and return true or false */ 
    }).property('some_item_on_user_data_hash') 
अपने रूटर में फिर

इससे पहले कि आप की अनुमति देने के एक संरक्षित रूट करने के लिए नेविगेशन, आप LoginController ऑब्जेक्ट से जांचते हैं। यह उदाहरण this answer से लिया गया है।

root: Ember.Route.extend({ 
    index: Ember.Route.extend({ 
     enter: function(router) { 
      var logged_in = router.get('loginController.is_logged_in'); /*Or in older ember builds `router.getPath('loginController.is_logged_in');`*/ 
      var just_logged_in = router.get('loginController.just_logged_in'); /*Or in older ember builds `router.getPath('loginController.just_logged_in');`*/ 
      Ember.run.next(function() { 
       if (logged_in && just_logged_in) { 
        router.transitionTo('loggedIn'); 
       } else if (!logged_in) { 
        router.transitionTo('loggedOut'); 
       } 
      }); 
     } 
    }), 

    loggedIn: Ember.Route.extend({ 
     // ... 
    }), 

    loggedOut: Ember.Route.extend({ 
     // ... 
    }) 
}) 
संबंधित मुद्दे

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