【发布时间】: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'];
});
我有两个解决方案来解决这个问题,但没有一个是理想的。
- 手动重置服务中的每个属性。这似乎不是一个理想的解决方案,因为有一天有人可能会忘记这样做。
- 注销时重新加载窗口。似乎要重置服务,但用户体验有些差。
有更好的选择吗?
【问题讨论】:
-
它取决于许多参数,您的问题目前过于宽泛,无法回答。您可以尝试github.com/witoldsz/angular-http-auth - 允许您使用事件处理注销/未经授权的请求
-
我已经在使用拦截器了。我想知道的是在注销事件期间,如何有效清除服务状态?
-
同样,这也取决于您的代码 - 您是否将数据存储在 localStorage 变量中?如果您还可以在问题中包含一些代码,那将是最好的,您使用的是
ui-route模块还是只是ngRoute。未知因素太多 -
抱歉,我的问题与 Angular 中的服务状态有关。我添加了更多描述。希望对您有所帮助。
-
听起来问题的部分原因首先是服务设计不佳。任何人都不足以提供建设性的帮助
标签: angularjs angular-services