网上其实有一大堆这样的资料了,我再写也没多大价值,谈下几个注意点吧。
1.在windows上安装Rmagic,如果你是通过gem安装的,
<!---->require 'Rmagic'
要修改为:
<!---->require 'rubygems'
require 'Rmagick'
才能正确引入。
2.网上那个例子,画布是使用Rmagic内置的图像格式,Rmagic内置的图像格式还有:
gradient*
梯度,比如gradient:red-blue
granite
花岗石,比如: "granite:"
.
logo
logo型的图像. 如: "logo:"
,后面会多显示一个五角星^_^
netscape
非常漂亮的彩条。如:
"netscape:"
null*
空白 使用方式: "null:"
rose
玫瑰 使用方式
: "rose:"
xc*
设置一个背景色,比如"xc:green"
一个修改的例子,在rails的models下存为noisy_image.rb,在Controller就可以这样调用NoisyImage.new(6)
:
require 'rubygems'
require 'Rmagick'
class NoisyImage
include Magick
attr_reader :code, :code_image
Jiggle = 15
Wobble = 15
def initialize(len)
chars = ('a'..'z').to_a - ['a','e','i','o','u']
code_array=[]
1.upto(len) {code_array << chars[rand(chars.length)]}
granite = Magick::ImageList.new('xc:#EDF7E7')
canvas = Magick::ImageList.new
canvas.new_image(32*len, 50, Magick::TextureFill.new(granite))
text = Magick::Draw.new
text.font_family = 'times'
text.pointsize = 40
cur = 10
code_array.each{|c|
rand(10) > 5 ? rot=rand(Wobble):rot= -rand(Wobble)
rand(10) > 5 ? weight = NormalWeight : weight = BoldWeight
text.annotate(canvas,0,0,cur,30+rand(Jiggle),c){
self.rotation=rot
self.font_weight = weight
self.fill = 'green'
}
cur += 30
}
@code = code_array.to_s
@code_image = canvas.to_blob{
self.format="JPG"
}
end
end
3.与rails应用的结合,和一般的验证码原理一样,将产生的随机数存储在session或者request范围内,提交的时候进行比较验证即可。比如产生图片的时候将随机字母存储在session[:code]中:
<!----> session[:noisy_image] = NoisyImage.new(6)
session[:code] = session[:noisy_image].code
验证的时候,比较提交的type_code与session[:code]即可,为了安全性考虑,最好还是不考虑使用客户端验证。
<!----> unless session[:code]==params[:type_code]
flash[:notice]='验证码填写错误,请重新注册,谢谢!'
return redirect_to :action=>:new
end
在页面显示图片,类似servlet一样直接调用Controller的action:
<!----> def code_image
image = session[:noisy_image].code_image
send_data image, :type => 'image/jpeg', :disposition => 'inline'
end
<img height='30' src="/test/code_image">
分享到:
相关推荐
在这个实例中,我们将探讨如何在Rails应用中实现验证码功能。 首先,我们需要一个库来帮助我们生成和验证随机的图像验证码。一个常用的库是`kaptcha`,它提供了创建图片验证码的功能,并且可以自定义样式以适应应用...
在Rails中,可以使用第三方库如`gem 'recaptcha'`来集成谷歌的reCAPTCHA服务,或者创建自定义的验证码生成器,通过随机字符或图片实现。 4. **数据查询**:Rails的ActiveRecord层提供了强大的查询接口,如`where`、...
基于rmagick的rails 3的简单验证码实现 经过Rails 3.2.8的测试 安装 添加到Gemfile gem 'easy_captcha' gem 'rmagick' 对于Java,您可以使用 gem 'rmagick4j' 捆绑执行后 rails g easy_captcha: install 配置 ...
Rails提供了许多内置工具和库,使得这个过程相对简单高效。在这个"rails登陆注册"的主题中,我们将探讨如何在Rails应用中实现用户认证系统。 首先,我们需要一个用户模型(User Model)来存储用户的个人信息和认证...
在`captcha-master`这个压缩包中,可能包含了`Package captcha`的源码,你可以深入研究其内部实现,了解验证码生成和验证的具体逻辑,这对于提升Go语言的Web开发技能和理解验证码工作原理非常有帮助。此外,这个包还...
- **发送文本消息**:通过 Twilio API,开发者可以实现向指定电话号码发送文本消息的功能,这在许多应用场景中都很有用,如通知服务、验证码发送等。 - **修复字段验证**:描述中提到的问题可能涉及到输入验证,意味...
【ror-codelit-landing:基于 Ruby on Rails 的登陆页面】是一个使用 Ruby on ...通过分析项目源码,我们可以深入理解 Ruby on Rails 如何与 JavaScript 配合构建现代 Web 应用,以及如何设计和实现一个安全的登录系统。
- 后端语言:如PHP、Python(Django或Flask)、Java(Spring Boot)或Ruby(Rails)等,实现业务逻辑处理和数据操作。 - RESTful API设计:确保前端与后端之间的通信规范,便于数据交换和功能调用。 3. 数据库...
- 发送短信验证码:与邮箱验证类似,通过发送短信验证码到用户手机,完成身份验证。 - SMS服务商:可能需要集成第三方短信服务商API,如阿里云、腾讯云等。 5. **重复注册防护**: - 用户名唯一性检查:在用户...
Laravel由Taylor Otwell创建,其设计灵感来源于Ruby on Rails。Laravel的核心特性包括艺术化的路由、简单的数据库迁移系统、强大的Eloquent ORM(对象关系映射)、方便的单元测试以及一套全面的工具,如Artisan...
"sms_confirmable"模块就是针对这一需求而设计的,它专注于通过短信验证码来验证用户的电话号码。这个模块可以与Devise这样的身份认证框架结合使用,提供额外的安全层,增强用户账户的安全性。 Devise是一个灵活的...
消息验证码(可选;默认情况下为启用) ##安装 安装宝石 gem install google_safe_browsing 或将其添加到您的Gemfile #Gemfile ... gem 'google_safe_browsing' 然后,生成迁移并运行它 $ rails generate ...
网上考试系统的开发通常采用Web开发框架,如Spring Boot、Django或Ruby on Rails,结合前端框架如React、Vue或Angular来构建用户界面。数据库管理系统可能选用MySQL、PostgreSQL或MongoDB等。验证码技术可以使用第三...
8. **反垃圾邮件和滥用防护**:防止恶意注册和发帖是论坛运营的重要部分,通常会采用验证码、IP限制、内容过滤等策略。 9. **SEO优化**:为了吸引更多的访问者,论坛内容需要对搜索引擎友好,包括元标签、URL结构...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...