我已经构建了一个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路由有效?
答案 0 :(得分:5)
默认情况下,Rails在控制器中使用CSRF protection
。 It 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