2014-05-07 10 views
5

के साथ उपयोगकर्ता की खाता जानकारी एक्सेस करें मैं अपने आवेदन में ember-simple-auth का उपयोग कर रहा हूं और यह अच्छी तरह से काम कर रहा है, लेकिन मैं यूआई में मौजूदा उपयोगकर्ता (जैसे ईमेल या नाम) से गुण प्रदर्शित करने में सक्षम होना चाहता हूं। अतीत में मैंने ऐसा करने के लिए एक एप्लिकेशन प्रारंभकर्ता का उपयोग किया है और अनिवार्य रूप से वर्तमान उपयोगकर्ता के साथ सभी नियंत्रकों को इंजेक्ट कर दिया है, लेकिन उस एप्लिकेशन को प्रारंभ होने पर वर्तमान उपयोगकर्ता को जाना आवश्यक था। चूंकि मैं ओएथ का उपयोग कर रहा हूं, एप्लिकेशन को लोड होने पर उपयोगकर्ता ज्ञात नहीं है।एम्बर सरल एथ

क्या वर्तमान में लॉग इन उपयोगकर्ता से संपत्ति प्राप्त करने का कोई तरीका है?

उत्तर

7

यह पता चला कि एम्बर-सरल-एथ का संस्करण मैं पुराना था और 0.3.x (0.2.x से) तक अपग्रेड करने की आवश्यकता थी। वहां से, मैं एक कस्टम प्रमाणीकरणकर्ता जोड़ने में सक्षम था जिसे मैंने लगभग परियोजना की उदाहरण फ़ाइलों से सीधे खींच लिया था। ध्यान दें कि मैं एम्बर 1.6.0 बीटा पर हूं 2.

नीचे दिए गए कोड के साथ, मैं this.get('session.currentUser') या {{session.currentUser}} का उपयोग करके टेम्पलेट्स में वर्तमान उपयोगकर्ता को रूट और नियंत्रकों में एक्सेस कर सकता हूं।

मेरे एपीआई में केवल एक ही बदलाव करना था, जिसमें ओएथ प्रतिक्रिया के साथ user_id शामिल था।

पिछले जवाब से अपडेट किया गया 0.4.0

मेरी प्रारंभकर्ता तो मैं अद्यतन समर्थन करने के लिए निम्नलिखित हो:

App.initializer({ 
    name: 'authentication', 

    initialize: function(container, application) { 
    Ember.SimpleAuth.Authenticators.OAuth2.reopen({ 
     serverTokenEndpoint: '/api/oauth/token' 
    }); 

    Ember.SimpleAuth.Session.reopen({ 
     currentUser: function() { 
     var userId = this.get('user_id'); 
     if (!Ember.isEmpty(userId)) { 
      return container.lookup('store:main').find('current-user', userId); 
     } 
     }.property('user_id') 
    }); 

    Ember.SimpleAuth.setup(container, application, { 
     authorizerFactory: 'ember-simple-auth-authorizer:oauth2-bearer', 
     routeAfterAuthentication: 'main.dashboard' 
    }); 
    } 
}); 

मेरा प्रवेश नियंत्रक अब इस तरह दिखता है:

export default Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin, { 
    authenticatorFactory: 'ember-simple-auth-authenticator:oauth2-password-grant' 
}); 
+1

यह पूर्ण सोने है! मैं महीनों के लिए एम्बर-सरल-एथ के साथ ऐसा करने का एक अच्छा तरीका खोजने के लिए संघर्ष कर रहा हूं। यह वास्तव में दस्तावेज़ों का हिस्सा होना चाहिए (यदि मानक कार्यान्वयन नहीं है)। – opsb

+0

@opsb मैंने अभी अपना जवाब अपडेट किया है क्योंकि इसे हाल ही में एम्बर-सरल-ऑथ की रिलीज के बाद और भी सरल बनाया जा सकता है। कस्टम प्रमाणीकरणकर्ता अब आवश्यक नहीं है। –

+0

अच्छा, यह क्लीनर दिखता है। – opsb

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