我是新手使用Passport身份验证和我之间的快递 服务器和客户端(在两个不同的端口上),我很棒 麻烦理解维护会话状态的概念 使用Passport并尝试检索
if any((A == 'string1', B == 'string2', C=='string3')): flag = 1
以确定是否从具有的用户发送请求 成功登录。使用Passport检查持久会话状态
在我的代码中,我有一个使用我自己的个人资料页面的路线 认证功能。我的登录路线使用 但是,
req.session.passport.user
。 我应该申请这个吗? 到所有后续路线(比如我的个人资料),或者是我的分开 预期认证?
passport.authenticate('local')
undefined由于某种原因,使用/ profile GET请求发送的cookie在成功登录后缺少
req.session.passport
对象(通过passport
)如果我,它看起来如下passport.use('local-login')
中的console.log(req.session)
。 为什么会这样?authenticated
服务器代码
Session { cookie: { path: '/', _expires: 2017-07-11T01:38:30.087Z, originalMaxAge: 14400000, httpOnly: true, secure: false } }
客户代码
// server.js let app = express(); app.use(cors()); import passportConfig from '../config/passport'; passportConfig(passport); //apply passport configuration var jsonParser = bodyParser.json(); app.use(jsonParser); app.use(cookieParser('mySecret')); app.use(session({ secret: 'mySecret', resave: false, saveUninitialized: true, cookie: {secure: false, maxAge: 4*60*60*1000 } })); app.use(passport.initialize()); app.use(passport.session()); function authenticated (req, res, next) { // req.session.passport is undefined if (req.session.passport.user) { next(); } else { res.redirect('/signup'); } } app.get('/profile', authenticated, (req, res) => { // server code handling route } app.post('/login', passport.authenticate('local-login', { session: true }), (req, res) => { res.json({ email: req.user.local.email }); }); // passport.js import User from '../models/User'; export default function passportConfig(passport) { passport.serializeUser((user, done) => { console.log('serializing user'); done(null, user.id); }); // used to deserialize the user passport.deserializeUser((id, done) => { console.log('deserializing user'); User.findById(id, (err, user) => { done(err, user); }); }); passport.use('local-login', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true }, (req, email, password, done) => { // if verification is successful var newUser = new User(); // set credentials of newUser... return done(null, newUser); })); }
我知道实际上有很多文章/帖子可供使用 类似的问题,但应用了许多不同的解决方案 都失败了。特别是对我的问题有任何帮助 赞赏。