节点 js 护照本地身份验证继续加载
Node js passport local authentication is keep on loading
我正在使用节点 js(express 和 mysql)创建一个应用程序,尝试使用本地护照进行身份验证。当我点击登录时,一切 运行 都很好,但在比较凭据后成功重定向不起作用( 继续加载 )。但如果凭据不匹配,则失败重定向工作正常没有任何错误。
怎么了?在哪里?谁能帮忙查一下?请...
我的登录路径:
router.post('/login', (req, res, next) => {
console.log('post login.'); //never logged, why?
passport.authenticate('local', {
successRedirect: '/admin/dashboard',
failureRedirect: '/login',
failureFlash: true
})(req, res, next);
});
护照配置:
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcrypt');
// Load User model
const User = require('../config/db').User;
module.exports = function(passport) {
passport.use(
new LocalStrategy({usernameField: 'email', passwordField: 'password' }, (username, password, done) => {
// Match user
User.findOne({where: {email: username}}).then(user => {
console.log(user.name); //logged user name.
if (!user) {
return done(null, false, { message: 'That email is not registered' });
}
// Match password
const isMatched = bcrypt.compareSync(password, user.password);
if (isMatched) {
console.log('password matched.'); //logged when password matched.
return done(null, user);
} else { console.log('password not matched.'); //logged when password not matched.
return done(null, false, { error_msg: 'Password incorrect' });
}
});
})
);
passport.serializeUser(function(user, done) {
console.log('serialized: ', user.id); //logged when credentials matched.
return done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findByPk(id, function(err, user) {
console.log('deserialized');
return done(null, user.id);
});
});
};
经过几个小时的谷歌搜索,我找到了解决方案,这里的问题出在 deserializeUser 方法中。
我只是在 deserializeUser 中更改了一点代码,因为:passport 无法将用户反序列化出会话 .
它对我来说效果很好,我希望它对有像我这样问题的人也有用。
passport.deserializeUser(function(user, done) {
return done(null, user);
});
我正在使用节点 js(express 和 mysql)创建一个应用程序,尝试使用本地护照进行身份验证。当我点击登录时,一切 运行 都很好,但在比较凭据后成功重定向不起作用( 继续加载 )。但如果凭据不匹配,则失败重定向工作正常没有任何错误。
怎么了?在哪里?谁能帮忙查一下?请...
我的登录路径:
router.post('/login', (req, res, next) => {
console.log('post login.'); //never logged, why?
passport.authenticate('local', {
successRedirect: '/admin/dashboard',
failureRedirect: '/login',
failureFlash: true
})(req, res, next);
});
护照配置:
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcrypt');
// Load User model
const User = require('../config/db').User;
module.exports = function(passport) {
passport.use(
new LocalStrategy({usernameField: 'email', passwordField: 'password' }, (username, password, done) => {
// Match user
User.findOne({where: {email: username}}).then(user => {
console.log(user.name); //logged user name.
if (!user) {
return done(null, false, { message: 'That email is not registered' });
}
// Match password
const isMatched = bcrypt.compareSync(password, user.password);
if (isMatched) {
console.log('password matched.'); //logged when password matched.
return done(null, user);
} else { console.log('password not matched.'); //logged when password not matched.
return done(null, false, { error_msg: 'Password incorrect' });
}
});
})
);
passport.serializeUser(function(user, done) {
console.log('serialized: ', user.id); //logged when credentials matched.
return done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findByPk(id, function(err, user) {
console.log('deserialized');
return done(null, user.id);
});
});
};
经过几个小时的谷歌搜索,我找到了解决方案,这里的问题出在 deserializeUser 方法中。 我只是在 deserializeUser 中更改了一点代码,因为:passport 无法将用户反序列化出会话 .
它对我来说效果很好,我希望它对有像我这样问题的人也有用。
passport.deserializeUser(function(user, done) {
return done(null, user);
});