Laravel 5 mewebstudio / captcha无法正常工作

时间:2016-01-13 12:12:30

标签: php session laravel-5 captcha laravel-5.2

我遇到了Laravel 5 mewebstudio / captcha的问题。

我安装它,在我的页面上是验证码图像

echo captcha_img()
echo Form::text('captcha','',["class"=>"form-control","placeholder"=>trans('page.captcha')]);

这很好用。

但问题在于验证,在验证表单后,我收到有关错误验证码的消息。

我的验证码:

    if (Request::isMethod('post')){

        //$data = Input::except(array('_token'));
        $data = Input::all();
        $rule = array(
            'name' => 'required',
            'firstname' => 'required',
            'bdate' => 'required',
            'email' => 'required|email',
            'password' => 'required|min:6|same:password_repeat',
            'password_repeat' => 'required|min:6',
            'captcha' => 'required|captcha'

        );

        $validator = Validator::make($data, $rule);

        if ($validator->fails()) {

            $errors = $validator->messages();

        }
    }

我认为验证码会话不起作用,因为在转储会话之后我没有应该放入会话的验证码密钥(我在Captcha.php中找到)

      $this->session->put('captcha', [
        'sensitive' => $this->sensitive,
        'key'       => $this->hasher->make($this->sensitive ? $bag : $this->str->lower($bag))
    ]);

2 个答案:

答案 0 :(得分:3)

在Laravel 5.2中,您需要将CaptchaServiceProvider中的第29行更改为

$this->app['router']->group(['middleware' => 'web'], function () {
            $this->app['router']->get('captcha/{config?}', '\Mews\Captcha\CaptchaController@getCaptcha');
        });

答案 1 :(得分:2)

我解决了这个问题。

在Laravel 5.2中,您需要更改CaptchaServiceProvider to

中的第26行
$this->app['router']->get('captcha/{config?}', \Mews\Captcha\CaptchaController@getCaptcha')->middleware('web');