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值更改为相应的路由。
- Active Directoryauthentication与ldap.js
- Node.jsrest调用需要证书的服务器
- sails-auth模块给出“不能读取属性'loadStrategies'的未定义的”
- REST API和移动应用程序的身份validation策略
- 即使login后,NodeJs Passport isAuthenticated()也会返回false
- 基于REST / Web的身份validation即服务的可能性?
- 使用Firebase身份validation和Express身份validation社交login?
- Sails.js – 使用会话和令牌进行身份validation
- 通过Node.js项目存储通用authentication详细信息的强大方法是什么?