因此,我有一個簡單的ESA設置與自定義身份驗證器/授權人環繞基本HTTP身份驗證。登錄路由使用UnauthenticatedRouteMixin
和登錄控制器基本上只是驗證針對自定義認證者,事後從REST服務獲取用戶對象:現在Ember簡單的身份驗證 - 驗證的承諾前確認的路由模型鉤子解決
export default Ember.Controller.extend({
session: Ember.inject.service('session'),
actions: {
login() {
var self = this;
let { userName, password } = this.getProperties('userName', 'password');
this.get('session').authenticate('authenticator:basicauth', userName, password).then(function()
{
self.store.queryRecord('user', { loginname : userName }).then(function (user) {
console.log(user.get('id'));
self.get('session').set('data.filterUserId', user.get('id'));
});
}).catch((reason) => {
this.set('errorMessage', reason.error || reason);
});
}
}
});
,在第一證實的路徑(經由AuthenticatedRouteMixin
),用於測試我也只是CONSOLE.LOG存儲會話屬性:
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
session: Ember.inject.service('session'),
model: function() {
console.log(this.get('session.data.filterUserId'));
},
});
在控制檯輸出,我觀察到,該模型似乎鉤認證的承諾得到解決之前執行,即首先我得到「空」,那麼, ID。
如何使AuthenticatedRoute等待實際登錄驗證解決?
謝謝,現在它變得更清晰了。我懷疑我的混淆是'sessionAuthenticated'方法(及其與'authenticationSucceeded'事件的關係) - 可能是自述文件中的一個簡短示例會有所幫助... –
後期跟進感到抱歉 - 我重新編寫了應用程序以遵循你的建議,但是我必須將'filterUser'屬性的設置移動到'loadCurrentUser()'方法以使其工作 –