最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何通过登录时使用bcrypt哈希的密码检查登录密码?

IT培训 admin 12浏览 0评论

如何通过登录时使用bcrypt哈希的密码检查登录密码?

我正在尝试创建一个注册/登录页面。我正在使用Nodejs,pug,猫鼬,bcrypt。哈希后,我将密码从注册或注册页面存储到数据库中。我无法使用

const user= new login.findone({email: req.body.email})
if(user){
   bcryptpare(myPlaintextPassword, hash, function(err, result) {
    // result == true
});
}

因为这给了我错误的结果。我也相信findOne({email:req.body.email})无法正常工作,或者那里也存在一些错误。

这里是处理这些验证的索引页

const express = require('express');
const {check, validationResult} = require('express-validator');
const router = express.Router();
const bcrypt = require('bcrypt');
const saltRounds = 10;

//Mongoose

const mongoose = require('mongoose');
var registration = require('../models/registrations') //Important
var login = require('../models/login') //Important

var blogpost = require('../models/blog')

//Routes

//-----------------------------------------------------------------------------------------------------------REGISTER/SIGN UP
router.get('/', (req,res)=>{
    res.render('./home.pug')
})

router.get('/register', (req, res) => {
    res.render('register',{ title: 'Register' });
});

router.post('/register', [
    check('name')
      .isLength({ min: 5 })
      .withMessage('> Please enter a name'),
    check('email')
      .isLength({min: 14})
      .withMessage('> Please enter an email'),
    check('password')
    .isLength({min:6})
  ],(req, res)  => {
    const errors = validationResult(req);
    
    var salt = bcrypt.genSaltSync(saltRounds);
    var hash = bcrypt.hashSync(req.body.password, salt);

    var emailcheck = registration.findOne({email: req.body.email})
    emailcheck.then(emailcheck => {
    if (emailcheck){
      res.render('register', {emailERROR: '> Email already in use!\n',  data: req.body,})
    }else{
      if (errors.isEmpty()) {
        const regis = new registration({
          name: req.body.name,
          email: req.body.email,
          password: hash,
        });
        regis.save()
          .then(() => { res.render('register', {successMSG: '> Succesfully Registered!',  data: req.body,})
        console.log(regis) })
          .catch((err) => {
            console.log(err);
            res.send('Sorry! Something went wrong.');
            
      })}
  
       else {
        res.status(422).render('register', {title: 'Registration form', errors: errors.array(), data: req.body,});
      }
    }
    })
console.log(req.body)
  })
//Register-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

//-------------------------------------------------------------------------------------------LOGIN
router.get('/login', (req, res) => {
  res.render('login',{ title: 'Login' });
});

router.post('/login', (req, res) => {
  //Empty
});





//Login-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

//-------------------------------------------------------------------------------------------BLOG
router.get('/blog', (req, res) => {
  res.render('blog',{ title: 'Blog' });
});
router.post('/blog', (req, res) => {
  const bp= new blogpost(req.body)
  bp.save()
    .then(()=>{
      res.render('blog', {successMSG:'>Succesfully Posted!'})
    })

  
});
//Blog-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

router.get('/about', (req, res) => {
  res.render('about',{ title: 'About' });
});


module.exports = router;
回答如下:
bcryptpare(myPlaintextPassword, hash, function(err, result) {}

您能详细说明您在此处输入的哈希值吗?如果到这里一切都正确了,那么下面的代码将为您正常工作。

const user= new login.findone({email: req.body.email})
if(user){
   console.log(user.password) // Check to see if password from database is returned as expected or not
   bcryptpare(myPlaintextPassword, user.passsword, function(err, result) {
       // Your codes
   });
}

如何通过登录时使用bcrypt哈希的密码检查登录密码?

我正在尝试创建一个注册/登录页面。我正在使用Nodejs,pug,猫鼬,bcrypt。哈希后,我将密码从注册或注册页面存储到数据库中。我无法使用

const user= new login.findone({email: req.body.email})
if(user){
   bcryptpare(myPlaintextPassword, hash, function(err, result) {
    // result == true
});
}

因为这给了我错误的结果。我也相信findOne({email:req.body.email})无法正常工作,或者那里也存在一些错误。

这里是处理这些验证的索引页

const express = require('express');
const {check, validationResult} = require('express-validator');
const router = express.Router();
const bcrypt = require('bcrypt');
const saltRounds = 10;

//Mongoose

const mongoose = require('mongoose');
var registration = require('../models/registrations') //Important
var login = require('../models/login') //Important

var blogpost = require('../models/blog')

//Routes

//-----------------------------------------------------------------------------------------------------------REGISTER/SIGN UP
router.get('/', (req,res)=>{
    res.render('./home.pug')
})

router.get('/register', (req, res) => {
    res.render('register',{ title: 'Register' });
});

router.post('/register', [
    check('name')
      .isLength({ min: 5 })
      .withMessage('> Please enter a name'),
    check('email')
      .isLength({min: 14})
      .withMessage('> Please enter an email'),
    check('password')
    .isLength({min:6})
  ],(req, res)  => {
    const errors = validationResult(req);
    
    var salt = bcrypt.genSaltSync(saltRounds);
    var hash = bcrypt.hashSync(req.body.password, salt);

    var emailcheck = registration.findOne({email: req.body.email})
    emailcheck.then(emailcheck => {
    if (emailcheck){
      res.render('register', {emailERROR: '> Email already in use!\n',  data: req.body,})
    }else{
      if (errors.isEmpty()) {
        const regis = new registration({
          name: req.body.name,
          email: req.body.email,
          password: hash,
        });
        regis.save()
          .then(() => { res.render('register', {successMSG: '> Succesfully Registered!',  data: req.body,})
        console.log(regis) })
          .catch((err) => {
            console.log(err);
            res.send('Sorry! Something went wrong.');
            
      })}
  
       else {
        res.status(422).render('register', {title: 'Registration form', errors: errors.array(), data: req.body,});
      }
    }
    })
console.log(req.body)
  })
//Register-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

//-------------------------------------------------------------------------------------------LOGIN
router.get('/login', (req, res) => {
  res.render('login',{ title: 'Login' });
});

router.post('/login', (req, res) => {
  //Empty
});





//Login-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

//-------------------------------------------------------------------------------------------BLOG
router.get('/blog', (req, res) => {
  res.render('blog',{ title: 'Blog' });
});
router.post('/blog', (req, res) => {
  const bp= new blogpost(req.body)
  bp.save()
    .then(()=>{
      res.render('blog', {successMSG:'>Succesfully Posted!'})
    })

  
});
//Blog-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x

router.get('/about', (req, res) => {
  res.render('about',{ title: 'About' });
});


module.exports = router;
回答如下:
bcryptpare(myPlaintextPassword, hash, function(err, result) {}

您能详细说明您在此处输入的哈希值吗?如果到这里一切都正确了,那么下面的代码将为您正常工作。

const user= new login.findone({email: req.body.email})
if(user){
   console.log(user.password) // Check to see if password from database is returned as expected or not
   bcryptpare(myPlaintextPassword, user.passsword, function(err, result) {
       // Your codes
   });
}
发布评论

评论列表 (0)

  1. 暂无评论