Разработка и токены без состояния в Rails

#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