参加比赛的Login项目....整了一天把验证码功能加上了......
把需要注意的事情提一下.
1.RMagick解压后的包里有gem文件,跟压缩包不同命,丫能不能不要那么大意,仔细找一找啊?
2.注意不要让生成图像和验证码的方法和显示验证码的方法在一起,这样导致的问题就是填写的验证码是过时的,等到用输入的验证码验证的时候,是用输入的验证码跟新生成的验证码效验。(=。。=)那就永远都不用进去了。但是这就涉及到逻辑的设计问题,最后我是新建了个logout的方法,总觉得欠妥,还是要再考虑。
def index
session[:noisy_image] = NoisyImage.new(4)
session[:code] = session[:noisy_image].code
end
def login
session[:user_authority]=nil
if request.post?
if VerificateCodeRight?
user=User.authenticate(params[:name],params[:password])
if user
session[:user_authority]=user.authority
redirect_to(:action=>'loged')
else
reset_seesion
flash.now[:notice]= "账号或者密码不存在,请重新输入"
end
else
flash.now[:notice]="验证码不正确,请重新输入"
end
end
end
3.要将传送图片的方法放在使用验证码的Controller下。
其实可能也不一定吧,下面的src是在erb文件下code_image方法的调用,红色的地方是Controller的名字,应该是可以随时换的。因为逻辑,想过放到ApplicationController下,但是不知道路由应该怎么写了。最后还是放弃放到使用的admincontroller下.....
<img height='30' src='/admin/code_image'>