Для моего 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.)
Как правильно временно хранить этот запрос? Как только я этого достигну, считается ли безопасным хранение полученного маркера доступа «как есть» или мне следует его зашифровать?