我正在使用Passport进行本地策略的用户身份验证。我无法登录,但我没有收到任何错误消息。我甚至设置了flash消息,但是当我尝试登录时我什么都没得到。
这是我的项目树
项目文件夹: │-index.js │-package.json │ ├───config │db.js │passage.js │ ├───controllers │counts.js │ ├───models │institution.js │user.js │ ├───routes │counts.js │user.js
/配置/护照:
const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/user');
const bcrypt = require('bcryptjs');
module.exports = function (passport) {
// Configure Passport authentication
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
bcrypt.compare(password, user.password, function (err, isMatch) {
if (err) throw error;
if (isMatch) {
return done(null, user);
} else {
return done(
null,
false,
{ message: "Incorrect Username or password" }
);
}
})
});
})
);
passport.serializeUser(function(user, done) {
console.log('serializing');
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
}
/ controllers / accounsts:
const handleLogin = function handleLogin (req, res, next) {
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/accounts/login',
failureFlash: true
}) (req, res, next);
}
/路由/帐户:
router.post('/login', accounts.handleLogin);
index.js
app.use(bodyParser.json());
// application/x-www-form-urlencoded parser
app.use(bodyParser.urlencoded({ extended: false }));
app.use(expressValidator());
app.use(cookieParser('keyboard cat'));
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true,
cookie: { secure: true }
}));
app.use(flash());
app.use(function (req, res, next){
res.locals.messages = messages(req, res);
next();
});
app. use(passport.initialize());
app.use(passport.session());
require('./config/passport')(passport);
我还没弄清楚我做错了什么。登录保持重定向到故障重定向路由,并且不显示失败消息。
如何解决此问题
答案 0 :(得分:0)
在index.js中 decalre"要求(' ./配置/护照&#39)(护照); "这是第一个,然后是
"应用程序。使用(passport.initialize()); app.use(passport.session());"
在passport.js下
KUBE_ADMISSION_CONTROL