AngularJS 中保存用户信息的方法

Methods of saving user info in AngularJS

我想了解保存用户信息的方法

很多前辈推荐使用$cookieStore,或者Authentication等等

但是使用 $rootScope 怎么样?

我的想法是当用户登录后,将 his/her id 和密码保存到 $rootScope

(命名方式类似于 $rootScope.user_id = 'stupid';

这种方式危险吗?

我不知道这个问题是否重复,但我找不到一个谈论使用 $rootScope

.

.

更新

我的配置如下。

'root controller' 可以看到每个范围,所以即使我刷新页面,

$rootScope 值没有消失。

$stateProvider
.state('root.login',{
    url: '/login',
    controller: 'LoginCtrl',
    templateUrl: 'views/login.html'
})
.state('root.signup',{
    url: '/signup',
    controller: 'LoginCtrl',
    templateUrl: 'views/signup.html'
})
.state('root.main',{
    url: '/main',
    controller: 'MainCtrl',
    templateUrl: 'views/main.html',
})

如果您正在存储敏感数据,$rootScope 将容易受到攻击,而是使用 localstorage 存储用户凭据,并使用某些加密算法和密钥进行加密,并如上所述,创建服务以获取和设置值。

在 rootScope 或 cookie 中存储原始用户凭据的方法非常糟糕。但是,您可以使用服务器端提供的 userToken 或 session 将其存档。

userToken 示例

  1. 发送用户登录请求到后端服务器
  2. 服务器return响应userToken
  3. angularjs 将 userToken 存储在 cookie 中
  4. 每次 angularjs 向后端请求时,必须附加此 userToken(通常放在 header 中)

session

的示例
  1. 发送用户登录请求到后端服务器
  2. 服务器 return 结果(因为后端服务器将在服务器本身的 http 上创建 session)
  3. angularjs可以正常发送req到后台(后台会验证session是否有效接受req)

因此,如果用户刷新页面或切换页面,您可以调用后端服务器来验证 userToken 或 session。