类似struts的token,使用session保存token,调用check_token后就把session里的token清掉,所以不能重复调用。
因为有些界面可能会有多个表单,这些表单最好共用同一个token,不然提交过来的token很难验证,所以这里做了处理,不会多次生成。
module ApplicationHelper
def token_field
hidden_field_tag(:__token__, (@__token__ ||= (session[:__token__] =
Digest::SHA1.hexdigest((Time.now.to_i + rand(0xffffff)).to_s)[0..39])))
end
end
class ApplicationController < ActionController::Base
def check_token
if session[:__token__] == params[:__token__]
session[:__token__] = nil
session.update
return true
end
false
end
end
<%= form_tag(:controller => "test", :action => "test") %>
<%= token_field %>
<%= submit_tag "提交" %>
</form>
检查token:
#方法1:
class TestController < ApplicationController
def test
unless check_token
return redirect_to("/")
end
#...
end
end
#方法2:
class TestController < ApplicationController
before_filter :check_token, : only => ["test"], : redirect_to => "/"
def test
#...
end
end
分享到:
- 2006-12-07 16:35
- 浏览 4606
- 评论(0)
- 论坛回复 / 浏览 (0 / 5920)
- 查看更多
相关推荐
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 在Rails项目中,我们首先需要了解的是项目的目录结构。一个标准的Rails应用会包含以下关键部分: 1. **app**:应用程序的核心,包括模型...
在Ruby on Rails框架中,构建表单是一项常见的任务,而Simple Form gem就是为了简化这一过程而设计的。Simple Form是一款强大的表单构建器,它提供了一种简洁、直观的方式来创建复杂的表单,使得开发者能更专注于...
Ruby on Rails:Rails中的表单处理.docx
在Rails中,`form_for`辅助方法可以帮助我们创建一个表单,但为了支持AJAX提交,我们需要将其与`remote: true`选项一起使用: ```html , url: uploads_path, html: { multipart: true }, remote: true do |f| %> ...
描述中重复提到"ruby on rails打包的程序",这意味着提供的压缩包可能包含了一个完整的、已经打包的Rails应用。这可能是一个已经运行起来的项目,或者是一个教学示例,用于演示如何组织代码、设置路由、处理用户输入...
### 重构你的Rails程式码 在进行Rails版本升级时,重构代码是一个绝佳的机会。本文将深入探讨为何这是个好时机来进行重构,并提供一系列实用的方法帮助您优化代码。...希望这篇文章能为您的Rails项目带来积极的影响。
总的来说,这个"Ruby-开箱即用的Rails项目模板"是一个预配置的Rails开发环境,集成了修改过的Swagger Docs以优化API文档生成,并且强调减少重复代码和提高业务逻辑的专注度。通过使用这个模板,开发者可以快速启动新...
5. **Gemfile和bundle安装**:在Rails项目的根目录下,你会看到一个`Gemfile`,这里列出了项目所需的所有Gem(Ruby的库)。运行`bundle install`命令,它会根据Gemfile中的依赖关系安装所有必要的库和框架。 6. **...
Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。本教程将详细介绍如何使用Aptana与Rails结合,创建一个功能完备的Web应用程序。 首先,我们需要安装Aptana...
这一章节将讨论Rails中的安全特性,如防止SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。通过实施这些防护措施,可以大大降低应用遭受攻击的风险。 #### 9. Advanced Topics(高级主题) 这一部分将覆盖...
Rails 的设计理念强调“约定优于配置”(CoC)和“不要重复自己”(DRY),使得开发者能够快速高效地构建复杂的应用程序。 #### 二、搭建环境与资源准备 1. **操作系统环境**:Redmine 可以在多种 Linux 发行版上...
通过将许多ActiveModel::Validation功能移植到JavaScript,Judge可以轻松地对Rails进行客户端表单验证。 最常见的验证通过存储在HTML5数据属性中的JSON字符串进行,并且仅在客户端执行。 无论您在何处,Judge都为...
- **学习路径**:继续深入学习Rails的高级特性,如Active Record模式、表单构建器等。 - **社区资源**:加入Rails官方论坛、Stack Overflow等社区获取帮助和支持。 #### 十一、文档编写技巧 - **重要性**:良好的...
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...
### 基于Ruby语言的Ruby on Rails项目及其代码方案 #### 一、项目概述 本项目基于Ruby语言,利用Ruby on Rails(简称Rails)框架构建。Ruby on Rails是一款使用Ruby语言开发的应用程序框架,其核心是MVC(Model-...
- **创建项目**:使用`rails new`命令创建一个新的Rails项目。 - **配置Git**:设置版本控制系统,确保代码变更能够被追踪记录。 - **使用Bootstrap进行前端设计**:介绍如何使用Bootstrap框架来快速搭建美观的...
当我们将jQuery UI引入Rails项目时,通常会使用`jquery-ui-rails` gem,这是一个将jQuery UI与Rails集成的便捷工具。在这个案例中,我们看到`jquery-ui-rails-4.2.1.gem`,这是该gem的一个特定版本。这个gem负责将...