繁体   English   中英

博客 web 中的身份验证问题,后端使用节点、快递和 mongoose 和前端使用 ejs

[英]authentication problem in blogging web, backend with node, express and mongoose and front end with ejs

我正在使用JWT执行身份验证和授权,并构建 rest apis 以连接ejsbackend 在让一个人通过身份验证后,我正在渲染到该用户的博客页面,但是当我点击添加块时,它说没有传递任何令牌,但是当我使用postman进行操作时,那么它就没有问题它正在获取令牌。 这是我在身份验证后呈现博客页面的代码:

router.post('/', async (req, res) => {
    const { error } = validate(req.body);
    if (error) return res.status(400).send(error.details[0].message);
    
    let user = await User.findOne({email:req.body.email});
    if (user) return res.status(400).send("user already registered");
    user = new User(_.pick(req.body,['name','email','password']));
    const salt = await bcrypt.genSalt(10);
    user.password = await bcrypt.hash(user.password,salt);
    await user.save();

    // const token= user.generateAuthToken();
    // res.header('x-auth-tocken',token).send({name:user.name, user:user._id,token:token});
    const token = jwt.sign({_id:this._id},config.get('jwtPrivateKey'));
    let blogs = await blogss.find();
    res.header('x-auth-token',token).render('bhome',{blogs:blogs,user:user});
 })

这是我的身份验证中间件:

module.exports = function (req ,res, next) {
    const token = req.header('x-auth-token');
    console.log(req.header('x-auth-token'));
    console.log('me here in auth');
    if(!token) return res.status(401).send('access denied because there is no token');
    try {
        const decoded = jwt.verify(token,config.get('jwtPrivateKey'));
        req.user = decoded;
        next();
    } catch (ex) {
        res.status(400).send('invalid taken');
    }
}

这是身份验证后的路线,表示令牌不可用:

router.get('/addblog', auth, (req, res)=>{
    res.render('addblog');
});

您处理 header 的方式是错误的,根据您提供的有限代码,这似乎是可能出现错误的原因。 不要这样做,而是尝试使用这个要点并将其实现为前端的实用程序 function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM