Есть ли способ обновить токен JWT, предоставленный devise-jwt в Rails? Или лучше всего заставить пользователя пройти повторную аутентификацию?
На самом деле не ответил в этой ветке @such ... ответ был «делать это по каждому запросу» (без примера) или «использовать другой драгоценный камень».





В итоге я сделал следующее:
В моем списке разрешений:
def self.jwt_revoked?(payload, user)
# Hook in here to refresh token
token = user.allowlisted_jwts.where(payload.slice('jti', 'aud')).first
if token.present? && (SOME LOGIC ABOUT YOUR EXPIRATION HERE)
token.update_column(:exp, Time.now + SOME TIME)
end
token.blank?
end
Там бы проверял срок годности. Например, если ваш токен длится 60 секунд, и вы хотите обновить его, если он старше 30 секунд. Вы могли написать:
if token.present? && token.exp < (Time.now+30.seconds)
token.update_column(:exp, Time.now+60.seconds)
end
Фактически ответ на этот вопрос был дан в этом выпуске: github.com/waiting-for-dev/devise-jwt/issues/7