最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

与bcrypt的密码比较不起作用

运维笔记admin9浏览0评论

与bcrypt的密码比较不起作用

与bcrypt的密码比较不起作用

我表示js很新,到目前为止我想做一个登录应用程序,但是我做了注册部分,但是在登录应用程序中,我想比较数据库中的密码和用户提供的密码,并与之进行比较。 bcrypt,因为我正在使用它来加密密码,但它没有进行比较,这是我在这里缺少的内容

路由器

const express = require('express')
const router = express.Router()
const bcrypt = require('bcrypt');
const User = require('../models/user')
const jwt = require('jsonwebtoken')
router.get('/login', function (req, res) {
    res.render('login')
  })
 router.get('/', function (req, res) {
    res.render('home')
  })
  router.get('/register', function (req, res) {
    res.render('register')
  })

  router.post('/register', async function(req,res){
    User.beforeCreate((user, options) => {

        return bcrypt.hash(user.password, 10)
            .then(hash => {
                user.password = hash;
            })
            .catch(err => { 
                throw new Error(); 
            });
    });
    return User.create({
        username: req.body.name,
        password: req.body.password,
        email: req.body.email,
        createdAt: Date.now()
    }).then(function (users) {

            res.send(users);

    }).catch((err)=>{
console.log(err)
    })
  })

  router.post('/login',  function(req,res){

   User.findOne({
       where:{
            username:req.body.name
       }
   })
   .then(user=>{
       if(user){
           if(bcryptpareSync(req.body.password,user.password)){
                let token = jwt.sign(user.dataValues,secretKey,{
                    expiresIn:1440
                })
            res.send(token)
        }
           else {
               res.status(400).json({
                   error:'error exissts'
               })
           }

       }
   })
   .catch(err=>{
       res.status(400).json({err:err})
   })
  })
 module.exports = router

模型

const sequelize = require('../database/db.js')
const Sequelize = require('sequelize');
const User = sequelize.define('authentication',{
 username: {
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.STRING
    // allowNull defaults to true
  }  ,
  email: {
    type: Sequelize.STRING
    // allowNull defaults to true
  },   
  created_at: {
    field: 'createdAt',
    type: Sequelize.DATE,
},
updated_at: {
  field: 'updatedAt',
  type: Sequelize.DATE,
},
}, {
  freezeTableName: true
},
{
  notNull: { args: true, msg: "You must enter a name" }
},


)
module.exports = User

指数

const express = require('express');
const exphbs = require('express-handlebars');
const bodyParser = require('body-parser');
const path = require('path');
// const passport = require('passport');
// const passportJWT = require('passport-jwt');
// Database
const db = require('./database/db');

// Test DB
db.authenticate()
  .then(() => console.log('Database connected...'))
  .catch(err => console.log('Error: ' + err))

const app = express();

// Handlebars
app.engine('handlebars', exphbs({ defaultLayout: 'main' }));
app.set('view engine', 'handlebars');

// Body Parser
app.use(bodyParser.urlencoded({ extended: false }));

// Set static folder
app.use(express.static(path.join(__dirname, 'public')));

// Importing files
const routes = require("./routes/route");

app.use("/", routes);


const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server started on port ${PORT}`));
回答如下:

index.js

    const express = require('express');
    const exphbs = require('express-handlebars');
    const bodyParser = require('body-parser');
    const path = require('path');
    // const passport = require('passport');
    // const passportJWT = require('passport-jwt');
    // Database
    const db = require('./database/db');

    // Test DB
    db.authenticate()
      .then(() => console.log('Database connected...'))
      .catch(err => console.log('Error: ' + err))

    const app = express();

    // Handlebars
    app.engine('handlebars', exphbs({ defaultLayout: 'main' }));
    app.set('view engine', 'handlebars');

    // Body Parser
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json())

    // Set static folder
    app.use(express.static(path.join(__dirname, 'public')));

    // Importing files
    const routes = require("./routes/route");

    app.use("/", routes);


    const PORT = process.env.PORT || 4500;

    app.listen(PORT, console.log(`Server started on port ${PORT}`));

route.js

const express = require('express')
const router = express.Router()
const bcrypt = require('bcrypt');
const User = require('../models/user')
const jwt = require('jsonwebtoken')
const uuid = require('uuidv4').default;
const secretKey = '321'
router.get('/login', function (req, res) {
    res.render('login')
  })
 router.get('/', function (req, res) {
    res.render('home')
  })
  router.get('/register', function (req, res) {
    res.render('register')
  })
  router.post('/register', function(req,res){
    User.beforeCreate((user, options) => {
        return bcrypt.hash(user.password, 10)
            .then(hash => {
                user.password = hash;
            })
            .catch(err => { 
                throw new Error(); 
            });
    });
    return User.create({
        id: uuid(),
        username: req.body.name,
        password: req.body.password,
        email: req.body.email,
        createdAt: Date.now()
    }).then(function (users) {
        res.send(users);
    }).catch((err)=>{
        console.log(err)
    })
  })
  router.post('/login',  function(req,res){
   User.findOne({
       where:{
            username:req.body.name
       }
   })
   .then(user=>{
       if(user){
           if(bcryptpareSync(req.body.password,user.password)){
                let token = jwt.sign(user.dataValues,secretKey,{
                    expiresIn:1440
                })
            res.send(token)
        }
           else {
               res.status(400).json({
                   error:'error exissts'
               })
           }
       }
   })
   .catch(err=>{
       res.status(400).json({err:err})
   })
  })
 module.exports = router

只需在index.js中添加app.use(bodyParser.json())并定义secretKey并在用户模型中添加ID以使主键和代码正常工作

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论