使用 ember-data 1.0.0-beta.8,ember-simple-auth 在发出任何其他请求之前从我的 API 加载当前用户。这保证了当前用户数据将在其他路由中可用。升级到 ember-data 1.0.0-beta.9 后,它会在发出其他 API 请求后加载当前用户。
有没有办法强制 ember-simple-auth 在使用 ember-data 1.0.0-beta.9 的其他数据之前加载当前用户?
我的自定义简单身份验证会话如下所示:
import SimpleAuthSession from 'simple-auth/session';
export default SimpleAuthSession.extend({
updateCurrentUser: function() {
var self = this;
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
self.set('currentUser', self.container.lookup('store:main').find('current-user', userId));
}
}.observes('user_id')
});
我的身份验证初始化程序:
import MyAppSession from 'my-app-ember/lib/my-app-session';
import FacebookAuthenticator from 'my-app-ember/lib/facebook-authenticator';
export default {
name: 'authentication',
before: 'simple-auth',
initialize: function(container) {
container.register('session:my-app-session', MyAppSession);
container.register('simple-auth-authenticator:facebook', FacebookAuthenticator);
window.ENV = window.ENV || {};
window.ENV['simple-auth'] = {
session: 'session:my-app-session',
authorizer: 'simple-auth-authorizer:oauth2-bearer',
routeAfterAuthentication: 'moments'
};
window.ENV['simple-auth-oauth2'] = {
serverTokenEndpoint: MyAppEmberENV.API_NAMESPACE + '/oauth/token'
};
}
};
这是一个地方的例子,我依赖于在 afterModel 钩子中的会话上设置的 currentUser 对象,并且在升级后被破坏:
export default Ember.Route.extend({
model: function() {
return this.store.find('moment');
},
afterModel: function() {
if (!this.get('session.currentUser.isReturningUser')) {
this.transitionTo('settings');
}
}
});