ActionController::InvalidAuthenticityToken 异常一般出现出现在手写的html form 标签和Ajax请求中,为什么会出现这个异常呢,这是从rails 2.0 开始包含的一个新功能,目的在于防止CSRF(Cross-Site Request Forgery)攻击.
rails 为了保证当前的请求是来自自己的请求,而不是通过其他网站伪造的请求,都会在生成的form 里加入一个隐藏的值
<input type="hidden"
value="457a1e93c3a23ec2c67f1dc468bde6a4a5539610"
name="authenticity_token"/>
生成的ajax代码:
onsubmit="new Ajax.Updater('div', '/cotroller1/action1/1',
{asynchronous:true, evalScripts:true, parameters:Form.serialize(this)
+ '&authenticity_token='
+ encodeURIComponent('457a1e93c3a23ec2c67f1dc468bde6a4a5539610')})
从上面的代码里可以看出关键是要向action 传递authenticity_token这个参数和正确的值
当然如果你认为你的action确实不需要验证,那可以这么写:
#除了index,controller里的其他action都需要验证
protect_from_forgery :except => :index
#只有index需要验证
protect_from_forgery :only => :index
如果是在ajax里可以在服务端生成好需要传入的字符串
"'#{request_forgery_protection_token}='
+ encodeURIComponent('#{escape_javascript
form_authenticity_token}')"
分享到:
相关推荐
使用 Rails 4 的简单聊天应用程序 - ActionController::Live 应用组件: 1 . 使用 Rails 4 ActionController::Live 的聊天应用程序 2 . 基本 LDAP 身份验证 3 . Redis 服务器集成 4 . 彪马服务器 1 . Rails 4 ...
Redis brew install postgresql redis 安装curl get.pow.cx | sh 下载依赖bundle install 符号链接到 pow ln -sf $(pwd)/website ~/.pow/teamstatus 在浏览器中打开故障排除如果您获得ActionController::...
适用于节点的Logitech Dual Action Controller 为EventEmitter提供Logitech Dual Action Controller上的按钮,dpad和模拟摇杆的事件。 受大力启发 安装 npm install logitech-dual-action-controller 用法 步骤1....
如何设置JWT 在应用程序的根目录中创建一个Procfile.dev并向其中添加以下行。 webpacker: ./bin/webpack-... ActionController::API include ::ActionController::Serialization respond_to :jsonend将以下gem添加到j
back_or_link_to controller: :welcome, action: :index image_button_to controller: :my_models, action: :create link_to 'Link with custom origin', with_detour(destination, origin) 在控制器中: b
构建gem的目的是实现一个类,该类将为ActionController::ConditionalGet#stale?创建选项ActionController::ConditionalGet#stale? 方法。 它允许缓存任何类型的对象,而不仅仅是记录或集合(不同于#stale? )。安装...
蒙皮路由器安装 $ npm install monpy-router例子 var router = require ( 'monpy-router' ) ;router . resolve ( '/' ) ;... add ( '/:controller/:action/:id' ) ;router . resolve ( '/user/edit
安装: composer require anlutro/l4-controller 从packagist或GitHub标签列表中选择最新的稳定版本。 警告:版本0.x期间不能保证向后兼容。 控制器 protected function url($action, $params = array()) 这是带...
type Exception report message description The server encountered an internal error () that prevented it from fulfilling this ... javax.servlet.http.HttpServlet.service(HttpServlet.java:717)解决办法:
简易控制器 EasyController 是一个控制器插件,可帮助您在... before_action :find_user , only : [ :show , :edit , :update , :destroy ] def show end def create @user = User . create ( user_params ) end
安装 composer require akrabat/rka-slim-controller用法在通常使用闭包的地方使用字符串格式{controller class name}:{action method name} : 例如 $app = new \RKA\Slim();$app->get('/hello:name', 'App\...
注意,该宝石适用于Rails,其中ApplicationController继承了ActiveController :: Base。 ActiveController :: API对Rails应用程序的支持即将推出。 用法 运行Rails服务器或运行rspec并检查log/action_tracer.log 。...
针对Action class [userAction] not found - action 和java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.setId(Ljava/lang/String;...两类异常非常有用的解决方法
喂食器 Feeder 为您提供了一个可安装的引擎,该引擎提供了到 Ruby on Rails 应用程序中提要页面的路由。... ActionController::Base helper Feeder::AuthorizationHelper helper Feeder::LikeHelperend用法
Spring-In-Action:Spring In Action Book解决方案编码
ActionController :: Base include Pundit include PunditHelpers end 助手目前添加了#authorized? 用于让 Pundit 知道您已检查授权的方法,以便过滤器后的verify_authorized不会引发异常,并在失败时返回 false...
特征Zuul为ActiveRecord提供了一种非常灵活的授权解决方案,其中可以在各种上下文中分配角色和(可选)权限,以及用于ActionController和视图的助手的同样强大的访问控制DSL。 它几乎可以与任何身份验证系统一起使用...
在模型级别包括 include ActiveModel :: SuppressForbiddenAttributes 并在控制器级别包括 include ActionController :: HandleUnpermittedParameters ` 还需要设置强参数以在未允许的参数上引发异常,这些参数可以...
ActionController :: Base include RansackMemory :: Concern # insert this line before_action :authenticate_user! # only if you use Devise gem before_action :save_and_load_filters # insert this line ...
在网络中查询解决办法大多是使用异常处理的办法,其内容如下: <package name="default" extends="struts-default"> <global-results> <result name="client-abort-exception">/ignored.jsp</result> ...