Node.js开发的后端登录注册

1.需要用的包、库

        npm i express@next   需要用express请求 文档链接

        npm i mongoose mongDB数据库 可以自动创建你所需要的数据库 文档链接

        密钥加密  npm i bcrypt  (散列 加密)

            npm i jsonwebtoken  生成token

server的配置

const express=require('express')
const {User}= require('./models')
const app=express()
const jwt=require('jsonwebtoken')
const SECRET="hahahahhahaaha"
//  nodemon server.js 运行
app.use(express.json())
app.get('/',async(req,res)=>{
    res.send(res.body)
    console.log(res.body);
})
//查看所有用户
app.get('/api/users',async(req,res)=>{
    
    const user=await User.find()
    res.send(user)
})
// 登陆
app.post('/api/login',async(req,res)=>{
    const user =await User.findOne({
        username:req.body.username
    })
    if(!user){
        return res.status(422).send({
            message:'用户名不存在'
        })
    }
    // 验证密码
    // npm i bcrypt
    const isPasswordValid=require('bcrypt').compareSync(
        req.body.password,
        user.password
    )
    console.log(isPasswordValid);
    if(!isPasswordValid){
        return res.status(422).send({
            message:'密码错误'
        })
    }
    // 生成token npm i jsonwebtoken
    const jwt=require('jsonwebtoken')

    const token= jwt.sign({
        id:String(user._id),

    },SECRET)
    // 简写token:token
    res.send({user,token})
})
//注册
app.post('/api/register',async(req,res)=>{
    // console.log(req.body);
    const user=await User.create(
        {
        username:req.body.username,
        password:req.body.password
         }
        )
    res.send(user)

})
// 中间件表示这个执行完毕执行下一串代码
const auth=async(req,res,next)=>{
    const raw=String(req.headers.token)
    // 验证token
    const {id}=jwt.verify(raw,SECRET)
    console.log(id);
   req.user= await User.findById(id)
    
    next()
}
app.get('/api/profile',auth,async(req,res)=>{
   

    res.send(req.user)
})
app.listen(3001,()=>{
    console.log('http://localhost:3001/api/profile');
})

model.js的配置

const mongoose=require('mongoose')
mongoose.connect('mongodb://localhost:27017/express-auth',{
   
})

const UserSchema= new mongoose.Schema({
    username:{type:String,unique:true},
    password:{type:String,set(val){
        //散列加密 2:加密等级 递增 npm i bcrypt
        return require('bcrypt').hashSync(val,2)
    }}

})
const User=mongoose.model('User',UserSchema)
// User.db.dropCollection('users')
module.exports={User}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值