node.js - 护照身份验证似乎不起作用
问题描述
这是我的 Passport.js 的 MiddleWare 我在这里遇到的问题我无法登录没有错误,注册路线工作成功我正在输入正确的凭据,我认为一切都很好,但我没有重定向到我尝试过的任何地方我收到 http:500 错误并收到 NO Select query where username='username' and password='password'
//Passport config
require('./config/passport')(passport)
//Passport MiddleWare
app.use(passport.initialize());
app.use(passport.session());
这是我的 passport.js 文件代码
var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');
var bcrypt = require('bcryptjs');
module.exports = function (passport) {
passport.use(new LocalStrategy(function (username, password, done) {
models.User.findOne({
where:{username: username}
}.then(function (err,user) {
if(err) console.log(err);
if (!user) {
return done(null, false, {message: 'No user found!'});
}
bcrypt.compare(password, user.password, function (err, isMatch) {
if (err)
console.log(err);
if (isMatch) {
return done(null, user);
} else {
return done(null, false, {message: 'Wrong password.'});
}
});
})
)
}));
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
}
这是我在路由中的登录方法
/*
*Post Login
*/
router.post('/login',function(req,res,next){
passport.authenticate('local',{
successRedirect:'/',
failureRedirect:'/admin/pages',
failureFlash:true
})(req,res,next);
})
这是我的 user.js
var express=require('express');
var router=express.Router();
var User = require('../models/user');
var models=require('../models');
var passport=require('passport');
var bcrypt=require('bcryptjs');
//Get Register
router.get('/register',function(req,res){
res.render('register',{
title:'Register'
})
});
/*
* Register Post
*/
router.post('/register',function(req,res){
var name=req.body.name;
var email=req.body.email;
var username=req.body.username;
var password=req.body.password;
var password2=req.body.password2;
models.User.findOne({
where:{username:username}
}).then(function(copyuser){
if(copyuser){
console.log('User already exist');
redirect('/users/login');
}
else{
var user={
name: name,
email: email,
username: username,
password: password,
admin: 0
};
// res.json(user);
bcrypt.genSalt(10,function(err,salt){
bcrypt.hash(user.password,salt,function(err,hash){
user.password=hash;
models.User.create(user).then(function(user){
res.json(user);
})
console.log('You are now registered');
res.redirect('/admin/pages')
})
})
}
})
})
/*
* Get Login
*/
router.get('/login',function(req,res){
if(res.locals.user) res.redirect('/');
res.render('login',{
title:'log in'
})
})
/*
*Post Login
*/
router.post('/login',function(req,res,next){
passport.authenticate('local',{
successRedirect:'/',
failureRedirect:'/admin/pages',
failureFlash:true
})(req,res,next);
})
//Exports
module.exports=router;
解决方案
推荐阅读
- java - 如何将 java db 嵌入到发行版中,使其在另一台机器上运行?
- django - Django ImageField 对象未使用输入字段更新
- python - PHP找不到张量流
- c# - 在 Blazor 中的 Page 和 NavMenu 之间交换数据
- azure - Azure Pipelines YAML:意外的值“变量”
- python - 使用根据数据排序的标签创建数据框
- scala - Scala - 字符串和列对象
- powerbi - SSAS表格/分析服务多币种输入多对多-多币种输出
- php - 如何在 PHP 中的 JSON 响应中编码日期,例如“/Date(1365004652303-0500)/”?
- python - 具有同步下拉菜单的多页 Dash 应用程序不起作用