ember ルーターを使用している場合、私の提案は、このようなソリューションを構築することです。
ログインコントローラ
App.LoginController = Ember.Controller.extend({
login: function(params){ /* Your logic here */ },
logout: function(params){ /* Your logic here */},
user_data_hash: { first_name: "The", last_name: "Hobbit"},
is_logged_in: (function() {
/* do some logic and return true or false */
}).property('some_item_on_user_data_hash')
just_logged_in: (function() {
/* do some logic and return true or false */
}).property('some_item_on_user_data_hash')
次に、保護されたルートへのナビゲーションを許可する前に、ルーターでLoginController
オブジェクトを確認します。この例は、この回答から取ったものです。
root: Ember.Route.extend({
index: Ember.Route.extend({
enter: function(router) {
var logged_in = router.get('loginController.is_logged_in'); /*Or in older ember builds `router.getPath('loginController.is_logged_in');`*/
var just_logged_in = router.get('loginController.just_logged_in'); /*Or in older ember builds `router.getPath('loginController.just_logged_in');`*/
Ember.run.next(function() {
if (logged_in && just_logged_in) {
router.transitionTo('loggedIn');
} else if (!logged_in) {
router.transitionTo('loggedOut');
}
});
}
}),
loggedIn: Ember.Route.extend({
// ...
}),
loggedOut: Ember.Route.extend({
// ...
})
})