Rails POST 请求无效令牌权限
Rails POST Request Invalid Token Authority
我已经构建了一个 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
那应该return一个JSON匹配用户的对象。我用 POSTMAN 测试过:
但是 returns 是什么错误指出无效的真实性令牌
我如何重新配置才能使这个 POST 路由正常工作?
默认情况下 Rails 使用 CSRF protection
in controller. 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
我已经构建了一个 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
那应该return一个JSON匹配用户的对象。我用 POSTMAN 测试过:
但是 returns 是什么错误指出无效的真实性令牌
我如何重新配置才能使这个 POST 路由正常工作?
默认情况下 Rails 使用 CSRF protection
in controller. 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