`

Rails3使用easy_captcha来实现验证码

 
阅读更多
easy_captcha是一个比较简洁的用来做验证码的gem插件

1、安装依赖rmagick
gem 'easy_captcha'
gem 'rmagick'


2、安装配置
rails g easy_captcha:install

执行安装后,配置config/initializers/easy_captcha.rb的各种参数
这是官网的一个配置例子(根据自己的需求,解注释)
EasyCaptcha.setup do |config|
  # Cache
  # config.cache          = true
  # Cache temp dir from Rails.root
  # config.cache_temp_dir = Rails.root.join('tmp', 'captchas')
  # Cache size
  # config.cache_size     = 500
  # Cache expire
  # config.cache_expire   = 1.day

  # Chars
  # config.chars          = %w(2 3 4 5 6 7 9 A C D E F G H J K L M N P Q R S T U X Y Z)

  # Length
  # config.length         = 6

  # Image
  # config.image_height   = 40
  # config.image_width    = 140

  # eSpeak (default disabled)
  # config.espeak do |espeak|
    # Amplitude, 0 to 200
    # espeak.amplitude = 80..120

    # Word gap. Pause between words
    # espeak.gap = 80

    # Pitch adjustment, 0 to 99
    # espeak.pitch = 30..70

    # Use voice file of this name from espeak-data/voices
    # espeak.voice = nil
  # end

  # configure generator
  # config.generator :default do |generator|

    # Font
    # generator.font_size              = 24
    # generator.font_fill_color        = '#333333'
    # generator.font_stroke_color      = '#000000'
    # generator.font_stroke            = 0
    # generator.font                   = File.expand_path('../../resources/afont.ttf', __FILE__)

    # Background color
    # generator.image_background_color = "#FFFFFF"
    # Or background image (e.g. transparent png)
    # generator.background_image       = File.expand_path('../../resources/captcha_bg.png', __FILE__)

    # Wave
    # generator.wave                   = true
    # generator.wave_length            = (60..100)
    # generator.wave_amplitude         = (3..5)

    # Sketch
    # generator.sketch                 = true
    # generator.sketch_radius          = 3
    # generator.sketch_sigma           = 1

    # Implode
    # generator.implode                = 0.1

    # Blur
    # generator.blur                   = true
    # generator.blur_radius            = 1
    # generator.blur_sigma             = 2
  # end
end


3、使用
在页面的form表单中添加:
  <p><%= captcha_tag %></p>
  <p><%= text_field_tag :captcha %></p>

在对应的提交的action中
  if captcha_valid? params[:captcha]
     redirect_to :index, :notice => "验证成功"
  else
     flash[:alert] = "验证失败"
  end


补充:
结合使用devise登录验证的验证码实现
devise是gem包的形式来存在的,所以基于devise的登录需要重写他的session类
1、创建sessions_controller并重载devise的sessions_controller
# encoding: utf-8

class SessionsController < Devise::SessionsController
  skip_before_filter :require_no_authentication, :only => [:new, :create]  

  def create
    if captcha_valid? params[:captcha]
      super
    else
      build_resource
      flash[:error] = "验证码输入错误"
      respond_with_navigational(resource) { render :new }
    end        
  end 
end


2、修改路由配置(默认的devise的配置是devise/sessions#create)
devise_for :users, controllers: {sessions: "sessions"}


参考资料
easy_captcha
https://github.com/phatworx/easy_captcha
easy_captcha实例
https://github.com/phatworx/easy_captcha_example

3、动态刷新
也可以去重写他的captcha_tag 方法,另外也可以去写js
   $(document).ready ->
     # 验证码刷新
     $("img[alt='captcha']").each (index, item) ->
       item.title = '看不清?点击刷新'
     $("img[alt='captcha']").bind 'click', (event) ->
       this.src = this.src + '?'
分享到:
评论

相关推荐

    easy_captcha:验证码插件(Rails)

    基于rmagick的rails 3的简单验证码实现 经过Rails 3.2.8的测试 安装 添加到Gemfile gem 'easy_captcha' gem 'rmagick' 对于Java,您可以使用 gem 'rmagick4j' 捆绑执行后 rails g easy_captcha: install 配置 ...

    rails实现验证码实例

    在这个实例中,我们将探讨如何在Rails应用中实现验证码功能。 首先,我们需要一个库来帮助我们生成和验证随机的图像验证码。一个常用的库是`kaptcha`,它提供了创建图片验证码的功能,并且可以自定义样式以适应应用...

    invisible_captcha, 针对RoR应用的Unobtrusive和灵活的垃圾邮件保护.zip

    invisible_captcha, 针对RoR应用的Unobtrusive和灵活的垃圾邮件保护 不可见的验证码 Rails 应用程序的简单和灵活的垃圾邮件保护解决方案。不可见的Captcha提供了不同的技术来保护你的应用程序免受垃圾干扰。主保护是...

    Complex Rails system_Rails_优化_

    3. **数据缓存**:使用低级缓存`Rails.cache`存储查询结果,避免重复计算。 三、代码优化 1. **避免在循环中进行数据库查询**:将查询移到循环之外,减少不必要的数据库交互。 2. **减少视图复杂性**:保持视图...

    rails3 和 thinking_sphinx安装

    现在,你可以在你的 Rails3 应用中使用 Thinking Sphinx 提供的搜索方法,如 `search` 来进行全文搜索: ```ruby @results = Post.search("搜索关键词") ``` Thinking Sphinx 还允许你进行高级查询、排序和过滤,...

    Rails_3_Cheat_Sheets.pdf

    Rails_3_Cheat_Sheets.pdf

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    invisible_captcha:对Rails应用程序的干扰和灵活的垃圾邮件保护

    Invisible Captcha提供了多种技术来保护您的应用程序免受垃圾邮件攻击。 主要保护是基于honeypot原理的解决方案,该解决方案提供了更好的用户体验,因为对于真正的用户而言,仅对于机器人而言,没有额外的步骤。 ...

    inspinia admin - v2.5 Rails_Full_Version

    "inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...

    Api-rails5_api_tutorial.zip

    Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...

    rails open_flash_chart

    "Rails Open Flash Chart" 是一个基于Ruby on Rails框架的库,用于在Web应用程序中生成交互式的Flash图表。这个库允许开发者轻松地创建各种统计图表,如折线图、柱状图、饼图等,以便更好地可视化数据。由于Flash在...

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器.zip

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    RESTful设计的一个关键特性是使用动词和名词来构建URL。例如,`/users`表示用户资源,而`/users/1`表示ID为1的具体用户。对于CRUD(Create, Read, Update, Delete)操作,Rails提供了如下的默认映射: - GET /users...

    InspiniaAdmin 2.6.1 Rails_Full_Version

    总的来说,InspiniaAdmin 2.6.1 Rails Full Version是一个强大且全面的后台管理解决方案,结合了Ruby on Rails的高效开发能力和Bootstrap的现代化设计,为Web应用开发者提供了强大的工具箱,使得后台开发工作变得...

    agile_web_development_with_rails_3rd_edition.9994652073.pdf

    Rails的设计理念是“约定优于配置”,这意味着框架会提供一系列默认设置,以减少开发人员的配置负担,使他们能够更快地专注于业务逻辑的实现。此外,Rails还提供了丰富的ORM(对象关系映射)工具ActiveRecord,以及...

Global site tag (gtag.js) - Google Analytics