【问题标题】:Express JS : always get message : TypeError: Assignment to constant variableExpress JS:总是得到消息:TypeError:赋值给常量变量
【发布时间】:2021-04-07 05:49:17
【问题描述】:

我正在尝试使用 Express JS 创建 API,该 API 工作正常,我使用 JsonWebToken 包对某些路由进行了授权,创建令牌很好,但是当我使用它时,我给出了这个错误:TypeError: Assignment到常量变量。 用户控制器登录:

    login:(req,res)=>{
        const body=req.body;

        checkUserByEmail(body.email,(err,results)=>{
            if(err){
                return err;
            }
            else if(!results){
                return res.json({
                    success:0,
                    message : 'email not registered!'
                });
            }
            else{
                const result = bcrypt.compareSync(body.password,results.password);
                if(result){

                    const jsonToken = sign({
                        email:body.email,
                        name:results.name
                    },process.env.TOKEN_KEY,
                        {expiresIn : 60*60*24*30*12});
                    return res.json({
                        success:1,
                        message:'loggin successfully',
                        token :jsonToken
                    })  
                }
                else{
                    res.json({
                        success:0,
                        message:'password is wrong'
                    })
                }
            }
        })
    },

我的认证方法:

module.exports = {
    checkToken :(req,res,next)=>{
        const token = req.get('authorization');
        if(token){
            console.log(token);
            
            token=token.slice(7);
            verify(token,process.env.TOKEN_KEY,(err,decoded)=>{
                if(err){
                    return res.json({
                        success:0,
                        messgae:'invalid token'
                    });
                }else{
                    next();
                }
            })
        }
        else {
            return res.json({
                success:0,
                messgae:'access not allowed'
            });
        }
    }
}

谁能帮忙?

【问题讨论】:

    标签: express authentication jwt token


    【解决方案1】:

    我通过改变token的切片方法解决了:

    token=token.slice(7);
    

    新的认证方法是:

    module.exports = {
        checkToken :(req,res,next)=>{
            const authHeader = req.headers['authorization']
            const token = authHeader && authHeader.split(' ')[1]
            if(token){ 
                verify(token,process.env.TOKEN_KEY,(err,decoded)=>{
                    if(err){
                        return res.json({
                            success:0,
                            messgae:'invalid token'
                        });
                    }else{
                        next();
                    }
                })
            }
            else {
                return res.json({
                    success:0,
                    messgae:'access not allowed'
                });
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 2020-07-31
      • 2017-08-04
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2021-03-10
      • 2021-02-09
      • 2014-04-30
      相关资源
      最近更新 更多