记录node.js+vue-elementui-admin的后台管理系统登录传参问题

文章描述了在使用Node.js作为后端,vue-element-admin作为前端进行登录功能开发时遇到的问题。用户登录的后端代码涉及到SQL查询、密码验证和JWT生成。在前端调用接口时,遇到了usernameisrequired的错误。通过测试发现,错误出现在使用form-data类型提交数据,而在x-www-form-urlencoded类型下正常。最终,作者通过引入qs库解决了这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:本来想用Node做后端,vue-element-admin做前端来练习一下技术,了解一下开发的过程

// 用户登录处理函数
exports.login = (req, res) => {
    console.log(req.body)
    const userinfo = req.body

    const sql = `select * from user where username=?`
    database.query(sql, userinfo.username, function(err, results) {
        //  执行sql语句失败
        if (err) return res.cc(err)
            // 执行sql语句成功,但是查询到的数据条数不等于1
        if (results.length != 1) return res.cc("登录失败啊")
            // 拿着用户输入的密码,和数据库中存储的密码进行对比
        if (userinfo.password === results[0].password) {
            // 生成 Token 字符串
            const tokenStr = jwt.sign(userinfo, config.jwtSecretKey, {
                expiresIn: '10h', // token 有效期为 10 个小时
            })
            res.send({
                status: 200,
                messgae: '登录成功',
                token: 'Bearer ' + tokenStr,
            })
        } else {
            return res.cc('登录失败')
        }

这是登录的核心后端代码,用户登录后和数据库进行对比,从而校验密码的正确与否,在前端vue-element-admin调用后发生了ValidationError: "username" is required,但是起先在postman我已经测试过接口的可行性,

 在form-data类型中调用接口也会发生相同的错误,但是在x-www-form-urlencoded类型中调用接口不会发生错误,随机我便想起了

通过设置header来修改提交数据的类型,但是经过测试扔不可行 ,随后我想起了qs

经过测试后即可解决问题 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值