easy example for Catalyst::Plugin::Captcha
Catalyst::Plugin::Captcha 在 CPAN 的文档不是很明了。我在 Foorum 中用了一下。把经过简单的写一下。
功能要求是“密码错误”的登录次数超过三次以后就显示出验证码。这样可以防止 script 暴力破解 user 密码。把登录错误次数可以放到 session 里,但是 script 可以通过删除 cookie 来伪造 sessionid, 所以我就把登录错误次数放到了 memcached 里。
首先当然是 cpan 安装模块,然后在 yml 中配置:
所以如果你要显示出验证码来的话,代码大致上是这样的:
我最后的 Logon.pm
还是自己点过去看看吧。:)
功能要求是“密码错误”的登录次数超过三次以后就显示出验证码。这样可以防止 script 暴力破解 user 密码。把登录错误次数可以放到 session 里,但是 script 可以通过删除 cookie 来伪造 sessionid, 所以我就把登录错误次数放到了 memcached 里。
首先当然是 cpan 安装模块,然后在 yml 中配置:
captcha:然后弄一个 captcha 的 Global 函数。
session_name: captcha_string
new:
width: 80
height: 30
lines: 1
gd_font: giant
create:
- normal
- rect
particle:
- 100
out:
force: jpeg
sub captcha : Global {
my ($self, $c) = @_;
$c->create_captcha();
}create_captcha 返回的是一个 img 的 source, 也就是验证码那个图片的内容。所以如果你要显示出验证码来的话,代码大致上是这样的:
<input type='text' name='captcha' size='12' /><img src='/captcha' />img 的地址就是刚才的 Global 所弄的函数。插件将这个图片实际上的字符串内容放到了当前的 session 里。
$c->session->{ $c->config->{captcha}->{session_name} } = $random_string;然后它提供的 validate_captcha method 就是比较 user 输入的东西跟这个 session 的内容。看看源代码就觉得非常清晰。我最后的 Logon.pm
还是自己点过去看看吧。:)
Labels: Catalyst
0 Comments:
Post a Comment
Links to this post:
Create a Link
<< Home