FastAdmin默认的前台登录是没有验证码功能的,很多时候我们为了避免穷举登录,我们需要给前台登录添加上验证码功能。
首先我们需要打开application/index/view/user/login.html
这个视图文件,找到第20
行左右,我们在密码框后面添加以下代码
//如果你启用了全新文字点击验证码,建议class添加上hidden<div class="form-group"> <label class="control-label">{:__('Captcha')}</label> <div class="controls"> <div class="input-group input-group-lg"> <input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="required;length(4)" style="border-radius: 0;" /> <span class="input-group-addon" style="padding:0;border:none;"> <img src="{:captcha_src()}" width="140" height="42" onclick="this.src = '{:captcha_src()}?r=' + Math.random();"/> </span> </div> <p class="help-block"></p> </div></div>
然后我们再打开application/index/controller/User.php
这个控制器文件,找到第141行login
这个登录的控制器方法。注意下其中代码段中的$rule
、$msg
、$data
这三个变量,我们都需要简单的修改一下,添加验证码的验证,代码如下:
$captcha = $this->request->post('captcha');$rule = [ 'account' => 'require|length:3,50', 'password' => 'require|length:6,30', 'captcha' => 'require|captcha', '__token__' => 'require|token',];$msg = [ 'account.require' => 'Account can not be empty', 'account.length' => 'Account must be 3 to 50 characters', 'password.require' => 'Password can not be empty', 'password.length' => 'Password must be 6 to 30 characters', 'captcha.require' => 'Captcha can not be empty', 'captcha.captcha' => 'Captcha is incorrect',];$data = [ 'account' => $account, 'password' => $password, 'captcha' => $captcha, '__token__' => $token,];
这样即可以为我们的前台登录添加上验证码功能了。
温馨提醒
1、如果你在后台启用了全新极验证码插件或全新文字点击验证码插件,前台登录的验证码也会做相应的替换。
2、如果你启用的是全新文字点击验证码插件,可能前台验证码会闪烁一下,此时的解决办法是给验证码的父元素上添加上hidden
这个class
即可
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。