Passport.jsvalidation总是失败
我的护照中间件不起作用。 当我在路由上调用passport.authenticate()以确认用户已通过身份validation时,我被redirect到失败页面。 但是,login路由按预期工作,并且我被成功redirect到正确的页面,在那里调用失败中间件redirect,并将其发送回login页面。
我有这样一个Passport战略:
module.exports = function(){ var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy var User = require('../models/user'); // used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.getUserById(id, function(err, user) { done(err, user); }); }); passport.use(new LocalStrategy({ usernameField: "email", passwordField: "password" }, function(email, password, done){ User.getUserByEmail(email, function(err, user){ if(err) throw err; if(!user){ console.log('unknown user'); return done(null, false, {message: 'Email not recognised, please try again'}); } User.comparePassword(password, user.password, function(err, isMatch){ if(err) throw err; if(isMatch){ return done(null, user); } else { console.log('Invalid password'); return done(null, false, { message: 'Password not recognised, please try again' }); } }); }); })); };
login是好的使用:
router.post('/user/login', passport.authenticate('local', { successRedirect: '/clients', failureRedirect: '/user/login', failureFlash: true } ));
我的“客户”路线是这样的,身份validation失败,并不正确地redirect回login页面:
router.get('/clients', passport.authenticate("local", { failureRedirect: "/user/login", failureFlash: "not verified" }), function(req, res, next) { res.locals.client = null; Client.find({}) .select("name") .select("_id") .exec(function(err, clients){ res.render('client/views/clients', { title: 'Clients', clients: clients }); }); });
服务器护照初始化如下所示:
//passport app.use(passport.initialize()); app.use(passport.session()); app.use(bodyParser.urlencoded({ extended: false })); require("./user/services/passport")(passport);
我究竟做错了什么?
正如你使用failureRedirect:'/ user / login'。 它会将您redirect到login页面。 如果您想将其redirect到其他页面,请将failureRedirect值更改为相应的路由。
- 如何将一个hapi auth插件变成可选的
- node.jsauthenticationphp auth_user
- 新用户注册后立即进行Passport身份validation
- 使用JSON Web令牌和node.js / express保护URL的正确方法
- 如何使用量angular器处理浏览器的本地authentication对话框
- LTI使用Node.js启动身份validation
- Node.js和Passport对象没有方法validPassword
- Sails.js:如何使用sails-generate-auth注册用户后返回访问令牌?
- Firebase child.once在auth.signInWithEmailAndPasswordcallback中超时不一致