#ruby-on-rails-3 #devise
#ruby-on-rails-3 #разработка
Вопрос:
Я получил API, который я разработал с использованием Rails 3 и Devise. Я использую токены (token_authenticatable) для аутентификации запросов, выполняемых в API от клиента. Я хочу иметь возможность переключаться между пользователями в запросах, просто заменяя токен.
Я слышал о настройке с именем:stateless_token (логическое значение), но я не могу понять, куда поместить эту настройку. Есть ли другой способ?
Если найден token_authenticatable здесь:
https://github.com/plataformatec/devise/blob/master/lib/devise/strategies/token_authenticatable.rb
Если нашел информацию о stateless_token здесь:
http://rdoc.info/github/plataformatec/devise/master/Devise/Models/TokenAuthenticatable
Ответ №1:
stateless_token
на данный момент не рекомендуется. Это новая форма (она позволяет использовать больше стратегий аутентификации без состояния):
# config/initializers/devise.rb
config.skip_session_storage = [:token_auth]
Комментарии:
1. С разработкой 2.1.3, Rails 3.1.1 я получал сообщение об ошибке:
undefined method
stateless_token=’для разработки: Модуль`. Это изменение исправило это. Спасибо!
Ответ №2:
Вы также можете отредактировать файл /config/initializers/devise.rb и поместить (или раскомментировать, если уже есть) следующую строку:
config.stateless_token = true
Комментарии:
1. Как отмечалось в другом месте, теперь это не рекомендуется. Используйте опцию config.skip_session_storage = [:token_auth]
2. Спасибо, что указали на это, тогда этого не было, когда я ответил 🙂
Ответ №3:
Это должно быть параметром в вашей строке devise_for в файле routes.
devise_for :users, :stateless_token => true
Дайте мне знать, если это сработает,
На этой странице документации для devise говорится, что «TokenAuthenticatable добавляет следующие параметры в devise_for:», одним из которых является токен без состояния.
Также вот ссылка на документацию devise_for