Я не уверен, когда они добавили его в Devise, но, похоже, есть конфигурация, которая позволит вам отключить отправку файла cookie сеанса при использовании auth_token:
# By default Devise will store the user in session. You can skip storage for
# :http_auth and :token_auth by adding those symbols to the array below.
# Notice that if you are skipping storage for all authentication paths, you
# may want to disable generating routes to Devise's sessions controller by
# passing :skip => :sessions to `devise_for` in your config/routes.rb
config.skip_session_storage = [:http_auth, :token_auth]
Это работаетЧто ж.Единственная проблема, с которой я столкнулся, заключалась в том, что мне все еще нужно было иметь возможность сделать первоначальный запрос к моему token_controller , чтобы сгенерировать / получить токен.Т.е. POST /api/v1/tokens.json
, что, к сожалению, приведет к возврату файла cookie сеанса для этого запроса.
Так что я в итоге реализовал CookieFilter
инициализатор, который Райан Ахерн написал выше в любом случае.Поскольку мое приложение имеет как веб-интерфейс, так и API-интерфейс JSON, я только хотел отфильтровать файлы cookie для API-интерфейса JSON.Поэтому я изменил класс CookieFilter
, чтобы сначала проверить, принадлежат ли запросы к API:
if env['PATH_INFO'].match(/^\/api/)
Rack::Utils.delete_cookie_header!(headers, '_myapp_session')
end
Не уверен, что есть лучший способ сделать это ...