我使用here中的标准示例,其中包含:
app.get('/login/facebook',
passport.authenticate('facebook'));
app.get('/login/facebook/return',
passport.authenticate('facebook', { failureRedirect: '/login' }),
function(req, res) { //req.user is populated
res.redirect('/');
});
app.get('/', function (req, res) {
res.render('index.jade', { user: req.user }); //req.user is undefined
});
登录似乎工作正常。在/login/facebook/return
我可以看到req.user
及其详细信息。但在重定向到/
后,req.user
变为undefined
。
还有什么我必须添加才能使其有效吗?
答案 0 :(得分:1)
根据Passportjs Documentations,passport.initialize()
和passport.session()
(对于持久登录),应在app
之后将express-session
添加到express.session()
。
来自文档:
请注意,启用会话支持完全是可选的,但建议大多数应用程序使用。如果启用,请务必在
passport.session()
之前使用app.configure(function() { app.use(express.static('public')); app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.session({ secret: 'keyboard cat' })); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); });
,以确保以正确的顺序恢复登录会话。
ERROR 2017-02-01 02:46:05,320 - root - Traceback (most recent call last):
File "/home/ubuntu/workspace/.../bootstrap.py", line 11, in <module>
from app import create_app
File "/home/ubuntu/workspace/.../app/__init__.py", line 31, in <module>
from handlers.hdl_logger import blpLog
File "/home/ubuntu/workspace/.../app/handlers/hdl_logger.py", line 15, in <module>
from google.cloud import logging
File "/usr/local/lib/python2.7/dist-packages/google/cloud/logging/__init__.py", line 18, in <module>
from google.cloud.logging.client import Client
File "/usr/local/lib/python2.7/dist-packages/google/cloud/logging/client.py", line 32, in <module>
from google.cloud.client import JSONClient
File "/usr/local/lib/python2.7/dist-packages/google/cloud/client.py", line 17, in <module>
import google.auth.credentials
ImportError: No module named auth.credentials