Hubot: как сохранить пользователей, вошедших в систему в различных интеграциях?
Я строю хабот, который интегрируется с Github, Trello и Jenkins, используя токены доступа пользователей. Пользователи должны аутентифицироваться, используя oauth, чтобы получить токен доступа. Токен, который я получаю, я шифрую и сохраняю в mongoDB. Когда пользователь запрашивает что-то, hubot должен вызвать определенный API (например, https://api.github.com/user/repos) с использованием токена пользователя. Таким образом, hubot должен извлечь токен пользователя из mongoDB, расшифровать его и использовать в запросе. Вышеприведенная процедура (о получении токена) происходит каждый раз, когда пользователь запрашивает что-то из этого API.
Так что я спрашиваю, есть ли способ избежать этой процедуры каждый раз, когда пользователи что-то просят. Есть ли способ сохранить их в системе? Что-то вроде экспресс-сессий для браузеров. Проблема с экспресс-сессиями заключается в том, что я должен использовать куки, которые, я думаю, невозможны или очень сложны с Hubot. Я думал об использовании Redis мозга. Это хорошая идея? как насчет безопасности?
Спасибо! -Andreas
1 ответ
Вы можете кэшировать токены в памяти, чтобы не запрашивать базу данных каждый раз. Поток это:
- проверить кеш на наличие токена
- если токен существует, верните его
- иначе получить токен из базы данных, сохранить его в кеш
- возвратный токен