1

我想知道保存用户信息的方法。

很多前辈都推荐使用$cookieStore, or Authenticationor 等​​。

但是如何使用$rootScope呢?

我的想法是当用户登录时,将他/她的 id 和密码保存到$rootScope.

(命名如$rootScope.user_id = 'stupid';

这是危险的方式吗?

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

.

.

更新

我的配置如下。

“根控制器”可以看到每个范围,所以即使我刷新了页面,

$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',
})
4

2 回答 2

1

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

用户令牌示例

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

会话示例

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

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

于 2017-10-26T07:26:21.130 回答
-2

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

于 2017-10-26T06:57:12.273 回答