【问题标题】:Angular Http Delete request returning undefined [MEAN stack]Angular Http Delete 请求返回未定义的 [MEAN 堆栈]
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 仅供参考,解决此问题的 Restful 方法是在 URL 中传递用户的标识符(即:/logout/user_id),然后后端将从标头中检索令牌(通常为 Authorization 或 @ 987654324@) 并使其无效。
猜你喜欢
  • 2015-04-03
  • 2023-04-04
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 2017-10-31
  • 2021-07-25
相关资源
最近更新 更多