2014-02-07 2 views
0

Я не могу понять, как лучше передать данные пользователя (адрес электронной почты, имя и т. Д.) На «вошедшие в систему» ​​виды (я использую нефрит).Как передавать данные пользователя во все виды?

Я использую паспорт и имею доступ к session.passport.user в своих представлениях, но здесь сохраняется только пользовательский _id, и мне сказали, что будет плохой практикой обеспечения безопасности, чтобы он сохранялся локально в cookie сессии.

Я не хочу передавать объект пользователя res.render на каждый контроллер, который мне нужен.

это, как я есть сессии создание локально

app.use(function (req, res, next) { 
    res.locals.session = req.session; 
    next(null, req, res); 
}); 

и это мой промежуточного слоя, чтобы проверить, если пользователь авторизован

function isLoggedIn(req, res, next) { 
    // if user is authenticated in the session, carry on 
    if (req.isAuthenticated()) { 
    return next(); 
    } 

    // if they aren't redirect them to the home page 
    res.redirect('/'); 
} 

Я посмотрел на динамических хелперов, но я используя express v3.0.0rc4.

+0

Так как ваши используют 'passport', то REQ должен иметь' .user'. –

ответ

1

Для этой цели вы можете использовать res.locals. Все, что вы помещаете в этот объект, будет доступно в контексте представления (если, конечно, оно не переопределено более поздним контекстом). Так, например, вы можете изменить свой isLoggedIn промежуточное программное обеспечение таким образом:

function isLoggedIn(req, res, next) { 
    // if user is authenticated in the session, carry on 
    if (req.isAuthenticated()) { 
    // obviouisly, don't use static strings... 
    // get these values from your authentication 
    // mmechanism 
    res.locals.user = 'username'; 
    res.locals.userEmail = '[email protected]'; 
    return next(); 
    } 

    // if they aren't redirect them to the home page 
    res.redirect('/'); 
} 
Смежные вопросы