【发布时间】:2021-02-10 13:58:40
【问题描述】:
当用户单击注销时,我正在尝试从服务器中删除刷新令牌。
auth.service.ts
deleteToken(refreshToken:any){
return this.http.delete(`${environment.baseUrl}/logout`, refreshToken).toPromise()
}
header.component.ts
refreshToken = localStorage.getItem('refreshToken')
logout = async()=>{
try {
console.log(this.refreshToken)
await this.authService.deleteToken({refreshToken:this.refreshToken})
localStorage.removeItem("refreshToken");
localStorage.removeItem("token");
this.router.navigateByUrl('/login');
} catch (error) {
console.log(error)
}
}
console.log(this.refreshToken) 是来自本地存储的令牌,因此可以正常工作。
后端 authController.js
exports.deleteToken = async (req, res) => {
try {
let user = await User.findOne({ refreshToken: req.body.refreshToken })
console.log(req.body.refreshToken)
if (req.body.refreshToken == user.refreshToken) {
await user.updateOne({ $unset: { refreshToken: "" } });
res.sendStatus(200);
} else {
res.status(400).json({ message: "Error while deleting token" })
}
} catch (error) {
console.log(error)
}
}
当我 console.log(req.body.refreshToken) 时它是未定义的
【问题讨论】:
-
改用
req.body -
@GuerricP 如果你的意思是在后端,不起作用,返回一个空对象
标签: javascript angular typescript mean-stack