gpt4 book ai didi

angularjs - 使用 ng-token-auth 检索身份验证状态和当前用户

转载 作者:行者123 更新时间:2023-12-03 06:56:34 25 4
gpt4 key购买 nike

我正在使用ng-token-auth以及devise_token_auth在我的 AngularJS 应用程序中。我已成功实现登录和注销,但在执行以下操作时遇到问题:

  1. 确定用户是否经过身份验证,以及
  2. 检索当前用户的信息。

我通过使用事件订阅者部分解决了 1:

myApp.run(['$rootScope',
($rootScope)->
$rootScope.isAuthenticated = false

$rootScope.$on('auth:validation-success', (e)->
$rootScope.isAuthenticated = true
)
$rootScope.$on('auth:login-success', (e)->
$rootScope.isAuthenticated = true
)

$rootScope.$on('auth:validation-error', (e)->
$rootScope.isAuthenticated = false
)
$rootScope.$on('auth:invalid', (e)->
$rootScope.isAuthenticated = false
)
$rootScope.$on('auth:login-error', (e)->
$rootScope.isAuthenticated = false
)
$rootScope.$on('auth:logout-success', (e)->
$rootScope.isAuthenticated = false
)
$rootScope.$on('auth:account-destroy-success', (e)->
$rootScope.isAuthenticated = false
)
$rootScope.$on('auth:session-expired', (e)->
$rootScope.isAuthenticated = false
)
])

但是,我不确定这是最好的方法。也许我应该这样做而是服务?

关于2,我已经安装了angular-resource并配置了一个 User 资源,但我不太确定在哪里检索用户信息(服务? Controller ?)以及如何在用户更新其个人资料时更新它(我应该听事件订阅者或只是重新加载每个状态更改的信息?)。

我对 Angular 还很陌生,所以如果我做错了什么,请告诉我。

最佳答案

我强烈建议您创建某种 UserService,它将保存您的所有身份验证和用户数据,以及您拥有的有关用户的所有逻辑功能,以及使用用户资源来获取、创建、更新、删除、验证、注销等...你真的应该避免在这里使用 $rootScope,这不是它的目的,实际上在很多情况下你都不想将数据放在 $rootScope 上。

所以在 UserService 中我建议您保存用户的信息,

function UserService(User) {
var _user = null;

this.getUserFromServer = function(userid) {
User.get(userId).$promise.then(user) { _user = user; };
}

this.isAuthenticated = fucntion (){
return user !== null;
}

this.logoff = fucntion (){
user = null;
}
}

这样我就解决了你遇到的两个问题,使用您创建的事件监听器来触发上述函数。

祝你好运。

关于angularjs - 使用 ng-token-auth 检索身份验证状态和当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616587/

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