По умолчанию , когда вы входите через токен, Devise сохраняет пользователя в сеансе, как в стратегии аутентификации базы данных.
Вы можете отключить это, установив stateless_token
в true
в инициализаторе Devise:
Devise.setup do |config|
config.stateless_token = true
end
Таким образом, токен должен быть снабжен каждым запросом .
Насколько я понимаю, аутентификация токена была разработана для использования вместе с аутентификацией в базе данных. devise_for
добавит маршруты сеанса только в том случае, если ваша модель database_authenticatable
. Это кажется незначительным упущением со стороны Devise, но, по моему мнению, токены доступа, оставляющие пользователя в сеансе, не имеют для меня большого смысла для начала.
В любом случае, попробуйте вручную определить маршруты к сеансам Devise.
Адаптировано из Помощники по разработке маршрутов (непроверенный код):
as :user do # User scope
resource :session, :controller => 'devise/sessions' do
# new_user_session | GET /users/sign_in => devise/sessions#new
get :new, :path => 'sign_in', :as => "new"
# user_session | POST /users/sign_in => devise/sessions#create
post :create, :path => 'sign_in'
# destroy_user_session | GET /users/sign_out => devise/sessions#destroy
get :destroy, :path => 'sign_out', :as => "destroy"
end
end
В любом случае документация для devise_for
помощника указывает, какие маршруты созданы и на что они указывают.