2016-07-24 3 views
1

Я создаю backend-приложение, использующее expressJs и passportjs (локальная стратегия) для защиты некоторых маршрутов. Мне нужно добавить информацию для текущего пользователя в каждом запросе базы данных, чтобы мы отображали только соответствующую информацию для каждого пользователя. Я знаю, что вы можете получить доступ к информации для текущего пользователя, проверяющего req.user, но это будет связано с передачей информации пользователя (или даже запроса) в качестве параметра через весь мой стек вызовов, и я счел это немного неудобным.Доступ к текущему пользователю в ExpressJs - Passport

Должен ли пользователь получать информацию о последнем слое (тот, который готовит инструкцию sql), не добавляя его к параметрам ?.

Спасибо.

ответ

1

Почему бы не получить информацию о пользователе на последнем уровне на id? Поскольку вы используете паспорт-локальный, вы можете запросить пользователя по id в последнем запросе базы данных, обратившись к req.user.id. Никакой параметр не требуется.

router.post('/your/route', function(req, res) { 
    User.findOne({ 
    where: {id: req.user.id} 
    }).then(function(user) { 
    // do something 
    }); 
//send response 
}); 
+0

Спасибо за ваш ответ. Таким образом, мне все равно нужно передать в userId запрос БД. Я пытаюсь избежать добавления дополнительных параметров ко всем методам. – Sole

1

Вы можете перейти к done функции паспорта в качестве второго параметра объекта пользователя с пользовательскими данными, например:

done(null, {id: 1, name: 'John'}); 

и req.user вернется {id: 1, name: 'John'}

Смежные вопросы