Javascript 我应该如何通过用户';我的Ember.js应用程序的登录状态?
我有一个互动的余烬应用程序,它有很多选项,只有登录用户才能使用。例如,可能有一个帖子列表,然后有另一个指向我的帖子的链接,这与用户相关 我想到了两个问题:Javascript 我应该如何通过用户';我的Ember.js应用程序的登录状态?,javascript,authentication,ember.js,Javascript,Authentication,Ember.js,我有一个互动的余烬应用程序,它有很多选项,只有登录用户才能使用。例如,可能有一个帖子列表,然后有另一个指向我的帖子的链接,这与用户相关 我想到了两个问题: 我如何告诉应用程序用户是否已登录,可能还有他的数据 如何根据他的登录状态隐藏特定功能和项目 有什么最佳实践可以实现这一点吗?我想登录过程本身不会那么复杂,但是如果登录,?做其他事对我来说是个很大的未知数。我应该在哪里存储全局用户状态?如果您使用的是ember路由器,那么我的建议是设计一个这样的解决方案 登录控制器 App.LoginCon
- 我如何告诉应用程序用户是否已登录,可能还有他的数据
- 如何根据他的登录状态隐藏特定功能和项目
有什么最佳实践可以实现这一点吗?我想登录过程本身不会那么复杂,但是如果登录,
?做其他事对我来说是个很大的未知数。我应该在哪里存储全局用户状态?如果您使用的是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({
// ...
})
})