我在登录时在本地存储中设置了身份验证令牌,并在注销时清除它。如果用户尝试再次登录,则在注销后,将从缓存中获取旧的身份验证令牌而不是新设置的值。清除localstorage时如何清除缓存。我在申请中使用了角度2。
登录:
localstorage.setItem("token", "value")
退出:
localstorage.clear();
答案 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