通过jquery ajax将jwt令牌存储在本地存储中

时间:2020-09-02 16:00:00

标签: jquery ajax express jwt token

我需要将我的jwt令牌存储在本地存储中,并且也将其放回标头中,当我用邮递员对其进行测试时,一切工作都非常完美。我进行了很多搜索,以找到正确的在线方法并使其正常运行,但没有发现任何有用的方法。

它在前端返回错误的无效令牌或未经授权的用户

这是我的代码:

   $(document).ready(function(){
$('.submit').on('click', function(e){
  e.preventDefault();


const name = $('#myInput').val();
const model = $('#do_it').val();
const condition = $('#select option:selected').val();
const description = $('#1').val();
const price = $('#exp').val();

const products = {
 product_name: name,
 product_model: model,
 product_condition: condition,
 product_description: description,
 expected_price: price
}

$.ajax({
 url: '/api/products_data',
 type: 'post',
 contentType: 'json',
 headers: { Authorization: "bearer " + localStorage.getItem("token")
 },
 data: products,
 dataType:'json',
 success: function(data){
             const dT  = localStorage.setItem("bearer", data.token);
             console.log(dT)
             alert(data.message);
 },
error: function (XHR, status, err){
         alert(XHR)
}
})
 })
});

我在后端使用express js

编辑: 我的专家jwt.verify代码也可能有助于找出问题所在

checkToken: (req, res, next) =>{
        let token = req.get('Authorization') || req.body.token || req.query.token
        
        if(token){
              token = token.slice(7);
            jwt.verify(token, process.env.JWT_key, (err, decoded)=>{  
          
                if(err) {
                    console.log(err);
                    res.json({
                        success: 0,
                        message: 'Invalid token'
                    });
                }else{
                    next();
                }  
            });
        }else {
            res.json({
                success: 0,
                message:'Access denied! Unauthorized user'
            })
        }
    }
}

0 个答案:

没有答案