我有以下代码将有效用户重定向到/profile
url with passport.js包,但我收到Bad Request
错误,控制台记录:GET /profile 400 24.100 ms - -
我想知道可能是什么原因。
var express = require('express')
//...
app.post('/login',
passport.authenticate('local', {
successRedirect: '/profile',
failureRedirect: '/',
failureFlash: true
})
);
var morgan=require('morgan')
app.use(morgan('dev')) // log every request to the console
app.get('/profile', passport.authenticate('local'),function(req,res){
res.render('profile.ejs',{
user: req.user
});
})
答案 0 :(得分:0)
我的问题是由于我的代码中不包含cookie-session
。我在代码中添加了以下行,问题解决了。
var cookieSession=require('cookie-session')
app.use(cookieSession({
keys:['secret1', 'secret2']
}))
显然passport.js
应与cookie-session
一起使用,以便能够在浏览器Cookie中存储用户会话状态。
另外,我必须按如下方式更改代码:
function authenticationMiddleware(){
return function(req,res,next){
if(req.isAuthenticated()){
return next()
}
res.redirect('/')
}
}
app.get('/profile', authenticationMiddleware(), function(req, res) {
////the following line did NOT work, gave `Bad Request` error:
//app.get('/profile', passport.authenticate('local'),function(req,res){
res.render('profile.ejs',{
user: req.user
});
})
This和that GitHub文件帮我写了authenticationMiddleware()
app.get('/profile',(req,res)=>{
res.render('profile.ejs',{
user: req.user
});
})