Node.js 护照验证似乎不起作用
这是我的Passport.js中间件我在这里遇到的问题我无法登录没有错误,注册路由正在成功运行我正在输入正确的凭据,我的视图中的所有内容都很好,但我没有重定向到我尝试的任何地方我遇到了http:500错误,并且没有在username='username'和password='password'处进行选择查询。Node.js 护照验证似乎不起作用,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,这是我的Passport.js中间件我在这里遇到的问题我无法登录没有错误,注册路由正在成功运行我正在输入正确的凭据,我的视图中的所有内容都很好,但我没有重定向到我尝试的任何地方我遇到了http:500错误,并且没有在username='username'和password='password'处进行选择查询。 //Passport config require('./config/passport')(passport) //Passport MiddleWare app.use(passpor
//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);
})
这是我在route中的登录方法
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);
})
这是我的用户.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;
为什么要使用
models.User.findOne
。模型变量在此上下文中未定义,对吗?。所以它应该是User.findOne
你也可以发布你的用户类吗?请更新User.js route-NuOne-Tdid你在你的codein passport.js中用User.findOne
替换models.User.findOne
,然后你能抓到吗?和console.log(错误)查看是否有错误或console.log(用户)在里面,然后立即查看是否没有错误?它看起来应该是User.findOne
而不是models.User,因为您不需要passport.js中的模型