Angularjs 视图间的本地存储值不一致

Angularjs 视图间的本地存储值不一致,angularjs,local-storage,angular-ui-router,Angularjs,Local Storage,Angular Ui Router,我正在用angularjs构建一个应用程序。我的后端使用令牌来管理会话。令牌在头中的每个请求上都被发送,响应包含一个带有新令牌值的头,我应该更新该值 我正在使用localStorage存储令牌值。我遇到的问题如下: 例如,当我输入route/users时,我请求用户,在报头中接收令牌,并在本地存储上本地更新它。然后我转到/products,例如,我请求产品,接收另一个令牌并在本地存储上本地更新它。当我回到/users、浏览器、angularjs或ui路由器时,我真的不知道是谁在做这件事,从缓存中

我正在用angularjs构建一个应用程序。我的后端使用令牌来管理会话。令牌在头中的每个请求上都被发送,响应包含一个带有新令牌值的头,我应该更新该值

我正在使用localStorage存储令牌值。我遇到的问题如下:

例如,当我输入route/users时,我请求用户,在报头中接收令牌,并在本地存储上本地更新它。然后我转到/products,例如,我请求产品,接收另一个令牌并在本地存储上本地更新它。当我回到/users、浏览器、angularjs或ui路由器时,我真的不知道是谁在做这件事,从缓存中获取视图,问题是localStorage也有缓存值,缓存值有一个旧的令牌值,这是无效的,从那里到后端的任何请求都将无法进行身份验证

有没有人能找到线索来克服这一切?。我希望本地存储在视图之间保持一致,即使它们被缓存,我也不希望本地存储被缓存

谢谢你的帮助

更新

这就是我如何从身份验证服务管理本地存储的方法


要关闭http级缓存,您可以

  • 调整服务器发送的缓存标头配置,使其不允许浏览器缓存响应—类似于
    response.header('Expires','-1'
  • 添加始终更改发送到服务器的请求的查询参数(例如,
    domain.com/api/something?timestamp=12341234

我想我已经找到了问题所在。在我的用户服务中,我设置了一个名为“all”的属性,如下所示:

users.all = Restangular.all('users').getList();
users.all = function() {
    return Restangular.all('users').getList();
};
因为它不是一个函数,所以在使用users.all访问时,第一次从restanglar.all('users').getList()返回的承诺

这就是为什么响应似乎被“缓存”的原因。这完全是我的错

解决方案是让users.all成为一个函数,如下所示:

users.all = Restangular.all('users').getList();
users.all = function() {
    return Restangular.all('users').getList();
};

您确定没有弄乱用于本地存储的密钥/域/前缀吗?我不敢相信localStorage.get('sameKey')会返回一个“缓存的过时值”-您的问题一定在其他地方。也许发一些代码。。。您是否使用angular local storage()?刚刚用我的身份验证服务中的代码更新了问题。我只是尝试使用angular local storage而不是$window。我也遇到了同样的问题。您是否以某种方式使用了多个域/子域?我想到的另一件事是,你写的比你想象的要多/要少:在你所有的服务调用中添加一个console.log,检查你写了什么和读了什么。不,所有东西都在同一个域中。谢谢你的帮助,兄弟。让我登录每个身份验证服务调用,并检查是否有错误!。我目前无法控制后端,我将尝试在查询字符串中发送一个时间戳,如果这样可以修复它,我会让您知道。谢谢