Ruby on rails的应用可以帮助编程人员快速简便灵活的实现各种代码编程。那么今天我们就来看看Ruby on rails实现验证码的相关技巧方法。#t#
创新互联是一家以重庆网站建设公司、网页设计、品牌设计、软件运维、seo优化、小程序App开发等移动开发为一体互联网公司。已累计为搬家公司等众行业中小客户提供优质的互联网建站和软件开发服务。
1.在windows上安装Rmagic,如果你是通过gem安装的
require'Rmagic'
要修改为:
require'rubygems'
require'Rmagick'
才能正确引入。
2.网上那个Ruby on rails实现验证码例子,画布是使用Rmagic内置的图像格式,Rmagic内置的图像格式还有:
gradient*梯度,比如gradient:red-blue
granite
花岗石,比如: "granite:".
logo
logo型的图像. 如: "logo:",后面会多显示一个五角星^_^
netscape
非常漂亮的彩条。如: "netscape:"
null*
空白 使用方式: "null:"
rose
玫瑰 使用方式 : "rose:"
xc*
设置一个背景色,比如"xc:green"
一个修改的Ruby on rails实现验证码例子,在rails的models下存为noisy_image.rb,在Controller就可以这样调用NoisyImage.new(6) :
- require'rubygems'
- require'Rmagick'
- classNoisyImage
- includeMagick
- attr_reader:code,:code_image
- Jiggle=15
- Wobble=15
- definitialize(len)
- chars=('a'..'z').to_a-['a','e','i','o','u']
- code_array=[]
- 1.upto(len){code_array<
(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
Ruby on rails实现验证码在进行验证的时候,比较提交的type_code与session[:code]即可,为了安全性考虑,***还是不考虑使用客户端验证。
- unlesssession[:code]
==params[:type_code]- flash[:notice]=
'验证码填写错误,请重新注册,谢谢!'- returnredirect_to:action=>:new
- end
在页面显示图片,类似servlet一样直接调用Controller的action:
- defcode_image
- image=session[:noisy_image].code_image
- send_dataimage,:type=>
'image/jpeg',:disposition=>'inline'- end
- < imgheightimgheight='30'
src="/test/code_image">
Ruby on rails实现验证码的相关技巧方法就为大家介绍到这里。
网页名称:分享Rubyonrails实现验证码技巧
当前网址:http://www.shufengxianlan.com/qtweb/news10/142260.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联