我正在寫一個本地註冊策略,並注意到它不起作用,所以我退後一步,試圖對我的空集合進行身份驗證。我每次提交表格需要30-40s,直到超時。我確保passport.authenticate()被調用,但它似乎ike它沒有做任何重定向,因此它是超時的,因爲我沒有渲染任何東西。Passport Authenticate不重定向
問題:
- 我預計它會做一個重定向到failureUrl(這是「/註冊」),而是什麼也沒有發生。我在這裏做錯了什麼?
- 爲什麼沒有單一的日誌消息來自護照?這讓我瘋狂,因爲我完全不知道那裏出了什麼問題。
- 我是新來的node.js和據我所知我不需要將配置的護照對象傳遞給路由器,而是我可以做
const passport = require('passport')
是正確的?
這是我的/註冊路由功能的處理程序:
function processSignup (req, res) {
logger.info("POST request received")
logger.info(req.body)
passport.authenticate('local', {
successRedirect : '/profile', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
})
}
溫斯頓打印:
7:32:04 PM - info: POST request received 7:32:04 PM - info: [email protected], password=dasdsa, submit=Register
我passport.js文件看起來像這樣:
const LocalStrategy = require('passport-local').Strategy
const User = require('./user-model')
const passport = require('passport')
// expose this function to our app using module.exports
function config() {
passport.serializeUser(function(user, done) {
done(null, user.id)
})
// used to deserialize the user
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user)
})
})
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
}
module.exports = {
config: config
}
我app.js的相關文檔片斷:
// required for passport
require('./authentication/passport').config();
app.use(cookieParser())
app.use(bodyParser())
app.use(session({
secret: 'secretToBeChanged',
saveUninitialized: false,
resave: false
}))
app.use(passport.initialize())
app.use(passport.session()) // persistent login sessions
app.use(flash()) // use connect-flash for flash messages stored in session
不熟悉的護照,但我敢肯定,你需要做的'res'對象的東西,否則該請求將永遠不會得到迴應。我的猜測是你以某種方式將對象提供給'passport.authenticate()'函數,以便它可以處理它。 –