Angular Http删除请求返回undefined [MEAN stack]



当用户单击注销时,我试图从服务器删除刷新令牌。

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)
}
}

当i console.log(req.body.refreshToken)时,它是未定义的

如果此解决方案是正确的,则删除请求中不包含正文。所以请求应该是这样的:

deleteToken(refreshToken:any){
return this.http.request('DELETE', `${environment.baseUrl}/logout`, {
body: { refreshToken: refreshToken }
}).toPromise();
}

最新更新