私が使用していた ember-simple-auth のバージョンが古く、(0.2.x から) 0.3.x にアップグレードする必要があることが判明しました。そこから、プロジェクトのサンプル ファイルからほぼ直接取得したカスタム認証システムを追加することができました。私は Ember 1.6.0 beta 2 を使用していることに注意してください。
this.get('session.currentUser')
以下のコードを使用すると、 を使用してルートとコントローラーで、または を使用してテンプレートでcurrentUser にアクセスできます{{session.currentUser}}
。
API に加えなければならなかった唯一の変更はuser_id
、OAuth 応答に を含めることでした。
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'
});