我正在尝试使登录工作正常进行,但是存在一些无法解决的问题。
我创建了登录服务,并且有:
Login(user: LoginModel) {
return this.http.post(this.userLoginURL, user)
.pipe(map((response: Response) => {
// this line needs changing to get response.token
// if I write repsonse.token, it throws error because of type Response
const token = sessionStorage.getItem('Token');
if (token) {
this.token = token;
sessionStorage.setItem('Token', JSON.stringify(this.token));
return response;
} else {
return false;
}
}));
}
在我的组件中:
submitLoginForm(e) {
if (this.valForm.valid) {
this.loginService.login(this.loginModel)
.subscribe(
(response) => {
this.router.navigate[('/dashboard')];
},
(error) => {
console.log(error);
}
);
}
}
在我的登录服务中,作为响应,我得到的令牌是具有令牌和用户内部对象的对象:
token = {
token = '...',
user = {...}
}
如何根据此响应将令牌设置为存储?还是我做错了其他事情?
答案 0 :(得分:1)
使用常规响应类型,因此您可以访问令牌属性
Login(user: LoginModel) {
return this.http.post(this.userLoginURL, user)
.pipe(map((response: any) => {
const token = response.token;
if (token) {
this.token = token;
sessionStorage.setItem('Token', JSON.stringify(this.token));
return response;
} else {
return false;
}
}));
}