清除localstorage时如何清除缓存

时间:2017-08-30 18:19:43

标签: javascript html5 angular

我在登录时在本地存储中设置了身份验证令牌,并在注销时清除它。如果用户尝试再次登录,则在注销后,将从缓存中获取旧的身份验证令牌而不是新设置的值。清除localstorage时如何清除缓存。我在申请中使用了角度2。

登录:

localstorage.setItem("token", "value")

退出:

localstorage.clear();

2 个答案:

答案 0 :(得分:1)

在执行 localstorage.clear(); 之前,您必须删除该元素;为此,您的代码应如下所示: localStorage.removeItem('Token'); localstorage.clear();

请注意,如果您使用的是BehaviorSubject,则还必须将其设置为null; 假设以下条件:

private loggedInUserSubject: BehaviorSubject<User>;
public loggedInUser: Observable<User>;

并在构造函数中获取用户值:

this.loggedInUserSubject= new BehaviorSubject<User>(JSON.parse(localStorage.getItem('loggedInUser')));
this.loggedInUser= this.loggedInUserSubject.asObservable();

然后注销:

    localStorage.removeItem('currentUser');
    this.currentUserSubject.next(null);
    localstorage.clear();

希望它可以帮助:D

答案 1 :(得分:0)

你如何确信注销将会发生? 如果用户只关闭浏览器怎么办?

除了安全令牌之外,我建议保存时间戳 并给出相同的时间用于凭证。

Code Editing --> C# --> Formatting Style --> Braces Layout