Laravel登录生成验证码

第一步 引入captcha依赖包

composer require gregwar/captcha

第二步    创建控制器方法

<?php
namespace App\Http\Controllers\Admin;
use Gregwar\Captcha\CaptchaBuilder;
use Illuminate\Http\Request;
use Session;

class AuthorityController extends Controller
{
   //生成验证码
   public function getCaptcha() {
    //生成验证码图片的Builder对象,配置相应属性
    $builder = new CaptchaBuilder;
    //可以设置图片宽高及字体
    $builder->build($width = 86, $height = 33, $font = null);
    //获取验证码的内容
    $phrase = $builder->getPhrase();
    //把内容存入session
    Session::flash('milkcaptcha', $phrase);
    //生成图片
    header("Cache-Control: no-cache, must-revalidate");
    header('Content-Type: image/jpeg');
    $builder->output();
}
    //验证注册码的正确与否
    

public function postLogin(Request $request)

{

//控制面板路径

$redirectTo = site_path('dashboard', 'admin');

//认证凭证

$credentials = [

'username' => $request->input('username'),

'password' => $request->input('password'),

'is_locked' => 0,

];

$userInput = $request->input('code');

if(Session::get('milkcaptcha') == $userInput){

if (Auth::attempt($credentials, $request->has('remember'))) {

event(new UserLogin(auth()->user())); //触发登录事件

return redirect()->intended($redirectTo);

} else {

// 登录失败,跳回

return redirect()->back()

->withInput()

->withErrors(['attempt' => '“用户名”、“密码”错误,请重新登录!']); //回传错误信息

}

}else{

return redirect()->back()

->withInput()

->withErrors(['attempt' => '“验证码”错误,请重新输入!']); //回传错误信息

}

}


}

第三步 前台调用

<div class="row">
        <div class="col-xs-8">
             <input type="text" name="code"  style="width:100%;border:1px solid #d2d6de;height:34px;padding:6px 12px;fontsize:14px;" placeholder="验证码">
         </div>
         <div class="col-xs-4">
           <img id="img" src="{{ _route('admin:auth.captcha') }}" style="width:100%;height:33px;"/>
         </div>
</div>

js点击刷新验证码
  <script>
        $('#img').click(function(){
          var url = "{{ _route('admin:auth.captcha') }}?"+Math.floor(Math.random()*100);
          $(this).attr('src',url);
        })
      });
    </script>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值