Почему бы вам просто не использовать dynamicHelpers?
во-первых, сохранить текущего пользователя в сеансе.Так как вы используете redis, проверьте что-то вроде connect-redis для экспресса.Затем сохраните его в сеансе следующим образом:
if( req.cookie('fingerprint') ) {
redis_client.get("users:fingerprint:"+req.cookie("fingerprint"), function(err,id) {
redis_client.get("users:id:"+id, function(err,user) {
req.session.user = JSON.parse(user);
})
})
}
Сделайте его доступным как dynamicHelper:
app.dynamicHelpers({
current_user: function(req) {
return req.session.user;
}
});
Теперь current_user доступен для всех ваших обработчиков маршрутов и представлений!
app.get('/admin/:id', function(req, res){
if(current_user) {
//do what you want here...
}
});
при входе в систему, просто сгенерируйте сеанс следующим образом:
req.session.regenerate(function() {
// same as above!
req.session.user = JSON.parse(user);
});
при выходе из системы, уничтожьте сеанс:
req.session.destroy(function() {
res.redirect('/');
});