यह पता चला कि एम्बर-सरल-एथ का संस्करण मैं पुराना था और 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'
});
स्रोत
2014-05-08 01:53:12
यह पूर्ण सोने है! मैं महीनों के लिए एम्बर-सरल-एथ के साथ ऐसा करने का एक अच्छा तरीका खोजने के लिए संघर्ष कर रहा हूं। यह वास्तव में दस्तावेज़ों का हिस्सा होना चाहिए (यदि मानक कार्यान्वयन नहीं है)। – opsb
@opsb मैंने अभी अपना जवाब अपडेट किया है क्योंकि इसे हाल ही में एम्बर-सरल-ऑथ की रिलीज के बाद और भी सरल बनाया जा सकता है। कस्टम प्रमाणीकरणकर्ता अब आवश्यक नहीं है। –
अच्छा, यह क्लीनर दिखता है। – opsb