我试图让会话与Passport一起工作。我已经完成了注册和登录功能,这似乎可以正常工作。
主要问题是req.isAuthenticated始终返回false。 我尝试过平常的事情:
确保app.use(passport.session())在快速会话配置之后出现:
...
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
secret: 'somethingsomethingdarkside',
cookie: { maxAge: 1209600000 },
saveUninitialized: false,
resave: false,
// using store session on MongoDB using express-session + connect
store: new MongoStore({
url: configDB.url,
collection: 'sessions'
})
}));
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
...
我已经进入Passports request.js文件,并做了一些调试,我可以看到
this[property/*user*/] = user;
设置我想要的值,我认为它应该。
现在,每当我打电话
if (req.isAuthenticated())
导致
this[property/*user*/] == undefined
返回false。我还发布了一条日志消息,告诉我模块何时被初始化,并且只在服务器启动时执行一次。
据我所知,user.deserializeUser永远不会被调用。
我的智慧结束了,有人能帮助我吗?
答案 0 :(得分:0)
我在这里已经有两三种傻了,但最后,经过长达数小时的深夜编码(可能是问题的主要根源),我设法解决了这个问题。
@haywire指着我走向req.user
,我看到它是空白的,然后我确保正确发送。
然后它将无法工作,因为我曾尝试使用路由中间件函数,该函数应该在我定义之前检查用户是否已登录。
咖啡是一种药物的地狱。