代码之家  ›  专栏  ›  技术社区  ›  Shanxx

我在哪里存储我的jwt以进行授权?

  •  0
  • Shanxx  · 技术社区  · 10 月前

    我连续几天搜索了许多文章,发现他们是这样发送令牌的

    res.json({token})

    并使用这样的中间件

    function verifyToken(req, res, next){
      const authHeader = req.headers['authorization']
      const token = authHeader && authHeader.split(' ')[1]
    
      if (token == null) return res.sendStatus(401); // No token provided
    
      if(jwt.verify(token,process.env.JWT_SECRET)){
        next()
      }
    }
    

    他们如何将该令牌放入 req.headers['authorization']

    当我 console.log 它给了我 only undefined

    这个 res.json({token}) 只给我发代币

    2 回复  |  直到 10 月前
        1
  •  1
  •   owenizedd    10 月前

    我怀疑您正在客户端向服务器端发送令牌,在实际生产级别实际存储令牌的最佳方法是放入带有Httponly标志的Cookie,并在Cookie中设置您的域名。

    如果您的网站容易受到任何安全攻击,那么使用LocalStorage您的网站将容易受到令牌盗窃的攻击,这是您最不希望发生的情况。
    有一篇文章解释了如何实现这一点: https://www.saurabhmisra.dev/store-jwt-token-http-only-cookie/

        2
  •  0
  •   Nazmul    10 月前

    他们基本上在客户端LocalStorage中设置令牌,当从客户端发送任何请求时,他们使用任何拦截器(为了方便起见,exp:axios拦截器)或定义头对象,如下所示:

        fetch('https://reqbin.com/echo/get/json', {
      headers: {
        'Content-Type': 'application/json',
       'authorization': `Bearer ${localStorage.getItem('token')}`
    
      }
    })
        .then(response => response.json())
        .then(data => console.log(JSON.stringify(data)))