django-rest-framework バックエンドで ember-simple-auth をセットアップしようとしていますが、ユーザーをセッションに保存する際に問題が発生しています。テンプレートで次のようなことができる必要があります。
<h2>Welcome back, {{session.user}}</h2>
したがって、私が見つけたいくつかのガイドに従って、認証と承認が機能するようになり、有効なトークンを取得してリクエストで使用できるようになりました。セッションでユーザーを取得するApp.CustomAuthenticator.authenticate
ために、トークンが返されたときにユーザー名もセッションに保存されるように変更しました。
authenticate: function(credentials) {
var _this = this;
return new Ember.RSVP.Promise(function(resolve, reject) {
Ember.$.ajax({
url: _this.tokenEndpoint,
type: 'POST',
data: JSON.stringify({username: credentials.identification, password: credentials.password }),
contentType: 'application/json'
}).then(function(response) {
Ember.run(function() {
resolve({
token: response.token,
username: credentials.identification
});
});
}, function(xhr, status, error) {
var response = JSON.parse(xhr.responseText);
Ember.run(function() {
reject(response.error);
});
});
});
},
次に、プロパティApplication.intializer
を与えるように変更しました。session
user
Ember.Application.initializer({
name: 'authentication',
before: 'simple-auth',
initialize: function(container, application) {
// register the custom authenticator and authorizer so Ember Simple Auth can find them
container.register('authenticator:custom', App.CustomAuthenticator);
container.register('authorizer:custom', App.CustomAuthorizer);
SimpleAuth.Session.reopen({
user: function() {
var username = this.get('username');
if (!Ember.isEmpty(username)) {
return container.lookup('store:main').find('user', {username: username});
}
}.property('username')
});
}
});
ただし、{{session.user.username}}
レンダリングされると、空の文字列になります。私の質問は次のとおりです。
- これは、ユーザーをセッションに割り当てるための最良の方法ですか? 私には不器用に思えますが、より良いものは何も見えません。
User
空の文字列は、オブジェクトではなく Promise が返されたためだと思いますが、どうすれば解決できますか?