【问题标题】:Rails POST Request Invalid Token AuthorityRails POST 请求无效的令牌授权
【发布时间】:2015-03-29 18:33:46
【问题描述】:

我已经建立了一个 POST 请求路由:

match '/getActivatedFriends',
  to: 'requests#getActivatedFriends', via: 'post',
  constraints: { friends_phone_number_csv: /([0-9]+,?)+/ } 

有动作:

def getActivatedFriends
    @results = BusinessUser.find_by_sql("SELECT 
                                            a.id
                                         ,  a.username
                                         ,  a.phoneNumber
                                         FROM users a
                                         WHERE phoneNumber in ('+params[:friends_phone_number_csv]+') and
                                               removed = 0 and
                                               is_user = 1;")

    respond_to do |format|
        format.html
        format.json { render json: { friends_match: @results }}
    end         
end

这应该返回匹配用户的 JSON 对象。我用 POSTMAN 测试过:

但返回的是指出无效真实性令牌的错误

如何重新配置​​以使此 POST 路由正常工作?

【问题讨论】:

  • 我们可以看看你的路线
  • 运行 rake 路由显示应该存在:getActivatedFriends POST /getActivatedFriends(.:format) requests#getActivatedFriends

标签: ruby-on-rails post authenticity-token


【解决方案1】:

默认情况下,Rails 在控制器中使用CSRF protectionIt is add to your form hidden_field with authenticity token. 但在您的情况下,您不使用表单 您可以通过跳过 before_action 验证来禁用控制器上的CSRF protection。 添加到您的请求控制器顶部:

skip_before_filter :verify_authenticity_token

或者在Rails 4 and 5(是同一个命令):

skip_before_action :verify_authenticity_token

【讨论】:

  • 为什么POST请求会出现这个错误,而其他请求不会出现?
  • 因为它是POST 请求什么应该更新你的一些资源。它是出于安全原因而制作的。海事组织
  • 好的,我稍后需要保护。谢谢,这成功了
  • 在 Rails 5 中使用 skip_before_action
猜你喜欢
  • 2017-12-26
  • 2016-08-21
  • 1970-01-01
  • 2017-02-02
  • 2015-03-30
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多