我正在尝试将rails web应用程序与rails API一起用于移动应用程序。为此,我使用Devise和Devise token auth。
我在Devise token auth gem中编写了路由,因此我可以拥有常规Devise和Devise身份验证令牌的路由。
我有两个问题:
authenticate_user!
,而在网络方面,我正在使用令牌进行身份验证。可能的解决方案:我创建了API控制器继承的separet ApiApplicationController。
class ApiApplicationController < ActionController::Base
include DeviseTokenAuth::Concerns::SetUserByToken
protect_from_forgery with: :null_session
end
可能的解决方案:我可以在if: Proc.new { |c| c.request.format == 'application/json' }
之后添加到ApplictionController和ApiApplicationController protect_from_forgery with: :null_session
答案 0 :(得分:1)
我曾经遇到过同样的问题,我的解决方案目前正在运作:
# application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :null_session, if: ->{request.format.json?}
end
# api_application_controller.rb
class ApiApplicationController < ActionController::Base
include DeviseTokenAuth::Concerns::SetUserByToken
before_action :authenticate_user!
end