node.js写登录接口

var express = require('express');
var router = express.Router();
var mongodb = require("../../utils/mongodb")
var bcrypt = require("../../utils/bcrypt")
var jwt = require("../../utils/jwt")
/* GET home page. */
router.post('/', function(req, res, next) {
    //1.获取前端传递来的用户名与密码
    let {username,password} = req.body
    //2.验证必传参数
    if(!username || !password){
        res.send({
            err:1,
            msg:"用户名与密码为必传参数..."
        })
        return
    }
    //3.需要查询数据库
    mongodb.open({
        collectionName:"user"
    }).then(({collection,client})=>{
        //进行查询操作
        collection.find({username}).toArray((err,result)=>{
            if(err){
                res.send({err:1,msg:"集合操作失败..."})
                client.close()
            }else{
                if(result.length>0){
                    //3-1 代表用户在数据库是存在的 ==> 登录的密码与数据库里面的密码进行校验 ==> 登录成功(token)
                    let flag = bcrypt.compareSync(password,result[0].password)
                    if(flag){ //说明密码输入正确
                        //生成token令牌
                        let token = jwt.sign({username,_id:result[0]._id})
                        delete result[0].username
                        delete result[0].password
                        res.send({
                            err:0,
                            msg:"恭喜您,登录成功!",
                            token,
                            data:result[0]  
                        })
                    }else{
                        res.send({err:1,msg:"用户名或者密码输入有误..."})
                    }
                    client.close()
                }else{ //3-2 用户在数据库里面不存在
                    res.send({err:1,msg:"此用户不存在,请注册!"})
                    client.close()
                }
            }
        })
    }).catch(err=>{
        res.send({err:1,msg:"数据库连接失败..."})
    })
});

module.exports = router;

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值