angular - 第一次注销后第二次登录不起作用
问题描述
如果登录凭据正确,我已经编写了一个 API,它返回一个令牌和一个用户 ID。那些我保存到本地存储中,如下所示: 如果用户令牌不再有效,我清除本地存储:
localStorage.clear();
登录代码是这样的:
this.http.post('http://localhost:5000/v1/login?username='+username+'&password='+password, JSON.stringify(params)).subscribe(res => {
if(res.token != null)
{
this.snackBar.open('Successfully Logged in..', 'x', {
duration: 2000,
});
localStorage.setItem('auth-token', res.token)
localStorage.setItem('userid', res.userid)
this.router.navigate(['/dashboard'])
}
else{
this.snackBar.open('User not found or wrong password..', 'x', {
duration: 2000,
});
}
})
我第二次尝试登录本地存储并没有保存任何内容。我很感激任何想法:)
解决方案
Idia 你可以在登录后返回 json 数据:
/* return backend DATA JSON*/
{
"isLogin":true,
"remember_token":'Token'
}
//Angular front-end
isCheckLogin:boolean=false
dataUser:any={}
dataInfo:any={}
//FUNCTION LOGIN
login=()=>{
this.http.post('http://localhost:5000/v1/login?username='+username+'&password='+password, JSON.stringify(params)).subscribe(res => {
this.dataUser = res;
if(this.dataUser.islogin){
this.isCheckLogin=true;
localStorage.setItem('auth-token', this.dataUser.remember_token);
}
})
}
//FUNCTION CHECKLOGIN
check_login = ()=>{
let data = localStorage.getItem('auth-token');
if(data.length>0){
this.http.get("http://http://localhost:5000/v1/user?token="+data).subscribe(item=>{
this.dataInfo = item;
this.router.navigate(['/dashboard'])
});
}
}
推荐阅读
- spring - 在不使用 Spring Security OAuth 的情况下实现 oauth2 授权服务器
- php - 获取 php json 数据到 jquery
- slack - 如何在多个工作区的 Slack 上集成 Rasa 机器人?
- tsql - TSQL:看似空的字符串
- php - shell_exec() 子进程应该继承euid吗?
- java - Java 变量可见性
- c++ - 滑动多选后QTreeView无法使用单击选择
- swift - 向圆形按钮添加徽章 - Swift
- c# - Fluent NHibernate Select Max of Count 按属性分组
- javascript - 为什么 matSort 不能处理异步数据