私が使用するApplicationRouteで、Ember-simple-authの古典的なセットアップがあります
model: function () {
return Ember.RSVP.hash({
user: this.store.find('gsUser').then(function(data) {
return data.get('content')[0]
})
});
},
setupController: function(controller, model) {
this.controllerFor('user').set('content', model.user);
}
ユーザーが認証を失い、ページを開いたとき。ApplicationRoute::model が最初に起動され、サーバーが 401 を返し、他の実行が停止します。
GET http://localhost:8000/app_dev.php/api/1/users.json 401 (Unauthorized)
Error while loading route: undefined
model
認証が成功した場合にのみ起動する必要があります。
あることはわかったがsessionAuthenticationSucceeded
、あらゆる方法で聞いてみたが、誰もうまくいかなかった。ユーザーが正常に認証されたときに、このイベントをリッスンしてサーバーからデータを取得する方法は?
11/06 22:57 更新:enter code here
私がなんとか達成したこの問題の1つの解決策ですが、それは完全に残り火の方法ではないようです:
App.ApplicationRoute = Ember.Route.extend(Ember.SimpleAuth.ApplicationRouteMixin, {
skipModelLoading: false,
beforeModel: function() {
this.set('skipModelLoading', !this.get('session').get('isAuthenticated'));
},
model: function () {
if (this.get('skipModelLoading')) {
return;
}
return Ember.RSVP.hash({
user: this.store.find('gsUser').then(function(data) {
return data.get('content')[0]
})
});
},
setupController: function(controller, model) {
if (this.get('skipModelLoading')) {
return;
}
this.controllerFor('user').set('content', model.user);
}
});