gpt4 book ai didi

javascript - 我应该如何将用户的登录状态传递到我的 Ember.js 应用程序?

转载 作者:搜寻专家 更新时间:2023-11-01 04:32:53 25 4
gpt4 key购买 nike

我有一个交互式 Ember 应用程序,它有很多选项,只有登录用户才能使用。例如,可能有一个帖子列表,然后有另一个指向与用户相关的我的帖子的链接。

我想到了两个问题:

  • 我如何告诉应用程序用户是否已登录,以及他的数据?
  • 如何根据他的登录状态隐藏特定功能和项目?

是否有解决此问题的最佳做法?我想登录过程本身不会那么复杂,但是 if logged_in? do_x else do_y 对我来说是一个很大的未知数。我应该在哪里存储全局用户状态?

最佳答案

如果您使用的是 ember 路由器,那么我的建议是构建一个这样的解决方案

登录 Controller

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')

然后在允许导航到 protected 路由之前,在您的路由器中检查 LoginController 对象。此示例取自 this answer .

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({
// ...
})
})

关于javascript - 我应该如何将用户的登录状态传递到我的 Ember.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13888657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com