Hubot: как сохранить пользователей, вошедших в систему в различных интеграциях?

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

Так что я спрашиваю, есть ли способ избежать этой процедуры каждый раз, когда пользователи что-то просят. Есть ли способ сохранить их в системе? Что-то вроде экспресс-сессий для браузеров. Проблема с экспресс-сессиями заключается в том, что я должен использовать куки, которые, я думаю, невозможны или очень сложны с Hubot. Я думал об использовании Redis мозга. Это хорошая идея? как насчет безопасности?

Спасибо! -Andreas

1 ответ

Решение

Вы можете кэшировать токены в памяти, чтобы не запрашивать базу данных каждый раз. Поток это:

  • проверить кеш на наличие токена
  • если токен существует, верните его
  • иначе получить токен из базы данных, сохранить его в кеш
  • возвратный токен
Другие вопросы по тегам