【问题标题】:Resetting / Clearing service data in AngularJS在 AngularJS 中重置/清除服务数据
【发布时间】:2016-11-16 15:43:51
【问题描述】:

为 AngularJS 清除服务数据的最佳实践是什么。例如,如果 user1 注销,而 user2 在同一个浏览器上重新登录,如果我不清除服务数据,那么 user2 将使用与 user1 相同的服务数据。

例如在下面的代码中,如果 user1 将更多用户添加到服务并注销,并且在同一浏览器中,如果 user2 重新登录,他们将能够看到 user1 添加的所有用户。

var module = angular.module('myapp', []);

module.service('userService', function(){
    var users = ['John', 'James', 'Jake'];
});

我有两个解决方案来解决这个问题,但没有一个是理想的。

  1. 手动重置服务中的每个属性。这似乎不是一个理想的解决方案,因为有一天有人可能会忘记这样做。
  2. 注销时重新加载窗口。似乎要重置服务,但用户体验有些差。

有更好的选择吗?

【问题讨论】:

  • 它取决于许多参数,您的问题目前过于宽泛,无法回答。您可以尝试github.com/witoldsz/angular-http-auth - 允许您使用事件处理注销/未经授权的请求
  • 我已经在使用拦截器了。我想知道的是在注销事件期间,如何有效清除服务状态?
  • 同样,这也取决于您的代码 - 您是否将数据存储在 localStorage 变量中?如果您还可以在问题中包含一些代码,那将是最好的,您使用的是ui-route 模块还是只是ngRoute。未知因素太多
  • 抱歉,我的问题与 Angular 中的服务状态有关。我添加了更多描述。希望对您有所帮助。
  • 听起来问题的部分原因首先是服务设计不佳。任何人都不足以提供建设性的帮助

标签: angularjs angular-services


【解决方案1】:

注销时:

window.location.href = "yourloginurl";

如果注销不如您的 SPA 的其余部分那么快,那也没关系。

【讨论】:

  • 我同意这一点。节省大量时间
猜你喜欢
  • 2014-06-21
  • 2016-11-30
  • 1970-01-01
  • 2014-12-18
  • 2017-08-13
  • 2015-08-08
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多