Rails API + devise_token_auth, как хранить некоторые данные сессии? - PullRequest
0 голосов
/ 13 января 2020

Для моего SPA у меня есть Rails API, который использует гем devise_token_auth. Я могу зарегистрироваться, войти в систему и сделать последующие запросы, но понимаю, что данные session не будут сохраняться между запросами. Следующие методы иллюстрируют проблему.

  def authenticate
    app_key      = Rails.application.credentials.discogs[:key]
    app_secret   = Rails.application.credentials.discogs[:secret]
    request_data = @discogs.get_request_token(app_key, app_secret,
                                              'http://localhost:8080/discogs/callback')
    session[:request_token] = request_data[:request_token] # #<OAuth::RequestToken:0x00007f3dd0236e18>
    render json: {
      url: request_data[:authorize_url]
    }
  end

  def callback
    # session[:request_token] is now nil :(
    request_token = session[:request_token]
    verifier      = params[:oauth_verifier]
    access_token  = @discogs.authenticate(request_token, verifier)

    session[:request_token] = nil
    current_user.update(discogs_access_token: access_token)
    render json: {
      status: "success"
    }
  end

(В конечном итоге я пытаюсь добиться однократной авторизации oAuth с помощью API Discogs, когда пользователи разрешают моему приложению использовать свою учетную запись Discogs.)

Как правильно временно хранить этот запрос? Как только я этого достигну, считается ли безопасным хранение полученного маркера доступа «как есть» или мне следует его зашифровать?

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