2017-01-13 4 views
1

Я прочитал в Loopback3 docs, что getCurrentContext() устарел. То, что я хотел бы сделать, это захватить токен доступа и использовать его для поиска связанного пользователя в db, поэтому я могу получить company_id, к которому принадлежит пользователь, и изменить запрос, чтобы включить его в предложение where. Я использую MySQL и пользовательскую модель UserAccount, которая простирается от пользователя.Loopback3 - Найти текущего пользователя по токену доступа

Я новичок в Loopback, поэтому изо всех сил пытаюсь понять это, так как большая часть интерактивной справки, похоже, указывает на getCurrentContext() ;.

Я создал некоторое промежуточное программное обеспечение для запуска на этапе синтаксического анализа:

middleware.json

"parse": { 
    "./modifyrequest": { 
     "enabled": true 
    } 
    } 

modifyrequest.js

var loopback = require('loopback'); 

module.exports = function(app) { 
    return function tracker(req, res, next) { 
    console.log('Middleware triggered on %s', req.url); 
     console.log('-------------------------------------------------------------------'); 
    console.log(req.accessToken); 
} 
}; 

Однако req.accessToken всегда не определено. Я добавил к server.js:

app.use(loopback.token()); 

Любые идеи? Это неправильный подход?

РЕШЕНИЕ

Согласно комментарий Камала ниже ...

Try настройка "петлевой # лексемы": {} в middleware.json под "начальная: перед тем"

Это заполнит REQ .accessToken

ответ

5

Сначала попробуйте установить "loopback#token": {} в middleware.json под "initial:before".

Затем, если вы обращаетесь к объекту accessToken из объекта запроса, вы можете найти userId в этом объекте accessToken. Попробуйте войти в систему req.accessToken, вы найдете здесь userId.

Вы можете использовать этот идентификатор пользователя для поиска соответствующего пользователя в базе данных.

User.findById(req.accessToken.userId, function(err, user){ 
    if(err) { 
    //handle error 
    } 
    else { 
    //access user object here 
    } 
}); 
+0

благодарит за ответ, но как указано req.accessToken всегда не определено, поэтому нет свойства userId. Я предполагаю, что есть что-то особенное для того, чтобы accessToken существовал? У вас есть пример промежуточного программного обеспечения, которое работает с вашим примером? – TimL

+0

Попробуйте установить '' '" loopback # token ": {}' '' в middleware.json под '' '" initial: before "' ''. – kamal0808

+0

Спасибо, что сделал трюк! – TimL

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