我有一个Rails API
,我使用devise
进行身份验证。我的客户端是React SPA。
我尝试将protect_from_forgery
中的application_controller
设置为:
class ApplicationController < ActionController::Base
protect_from_forgery with: :null_session
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:sign_in, keys: [:otp_attempt])
end
end
但是对于每个put/post
请求,它都会引发错误:
Can't verify CSRF token authenticity
这很有意义,因为我没有随请求一起发回任何CSRF token
。
似乎对rails进行此操作的方法是在<%= csrf_meta_tag %>
中添加application.html.erb
,但是我正在使用jbuilder
将所有内容转换为json
,然后再将其发送到我的SPA。
是否可以在客户端访问此信息,以便为CSRF启用保护?