You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6远程表单未验证Authenticity Token问题求助

Rails 6远程表单未验证Authenticity Token的原因

场景复现

在Rails 6中使用以下远程表单提交订阅请求:

<%= form_with url: "/subscribe_newsletter", local: false, id: "newsletter-form" do |f| %>
    <%= f.email_field :email, placeholder: "Entrez votre courriel...", required: true %>
    <%= f.hidden_field :conversion_source, value: "newsletter-block" %>
    <%= f.submit "S'inscrire", class: "cta", "data-action" => "click->abonnement#busyCursor" %>
<% end %>

对应的控制器方法:

class AccountController < ApplicationController
    layout 'blank'

    def subscribe_newsletter 
        user_params = {
            email: params[:email],
            conversion_source: params[:conversion_source] ||= ""
        }
        # 创建账户并发送确认邮件
        new_user = User.new(user_params)
        new_user.skip_password_validation = true
        if new_user.save
            flash[:notice] = "Inscription réussie ! Vérifiez vos courriels pour confirmer votre inscription."

            respond_to do |format|
                format.js
            end
        end
    end
end

问题

手动修改或删除表单中的隐藏Authenticity Token字段后,表单仍能成功提交并创建用户,Rails并未对Authenticity Token进行验证,这是为什么?

解决方案

远程表单并不会依赖自身携带的隐藏Authenticity Token字段,而是默认从页面头部的meta标签中获取该Token,这是Rails远程表单的固有特性。


内容的提问来源于stack exchange,提问作者nico_lrx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 19:18:29