2015-08-27 3 views
1

Мой код вставляется ниже. В методе обратного вызова я устанавливаю пользователя, но когда я перенаправляюсь на '/', пользователь больше не доступен. Я использую паспорт и клиентские сессии. Любая помощь будет принята с благодарностью. Первоначально я использовал req.session и изменил его в соответствии с этим linkмодуль клиент-сессий с паспортом

Спасибо.

app.get('/', function (req, res) { 
if (req.session_state.user == null) { 
passport.authenticate('azureoauth', { failureRedirect: './'}) 
} 
else { 
res.render('index', {user: req.session_state.user}); 
} 
}); 

//This gets called by an external internet application 

app.get('/auth/azureOAuth/callback', 
passport.authenticate('azureoauth', {}), 
function (req, res) { 
req.session_state.user = req.user; 
res.redirect("/"); 
}); 

И в моем app.js, у меня есть следующий код:

const clientSession = require("client-sessions"); 
app.use(clientSession({secret: 'blablabla', duration: 1000 * 60 * 60 * 24 * 365 * 10})); 
app.use(passport.initialize()); // for user authentication/authorization 
app.use(passport.session()); 
+0

Я не знаком с паспортом , но вы задаете имя сеанса как «session_state»? – Fab

ответ

0

я нашел this article очень полезно, в частности, это конкретная бит:

app.use(function(req, res, next) { 
    if (req.session && req.session.user) { 
    User.findOne({ email: req.session.user.email }, function(err, user) { 
     if (user) { 
     req.user = user; 
     delete req.user.password; // delete the password from the session 
     req.session.user = user; //refresh the session value 
     res.locals.user = user; 
     } 
     // finishing processing the middleware and run the route 
     next(); 
    }); 
    } else { 
    next(); 
    } 
}); 
Смежные вопросы