最近、友人からlaravelの認証コードログインについて手伝ってほしいと頼まれたので、少し調べてみました。この記事ではLaravel5.2のCaptchaを使った検証コード(セッションピット)の生成方法を中心に紹介しますので、必要な方は参考にしていただければ幸いです。
まず、laravel のインストールについて詳しく説明する必要はありません。これは非常に重要です。私のバージョンは 5.2.45 です (注: laravel 5.2.6 以降のミドルウェアは自動的にロードできます)。
インストールが完了したら、composer を使用してキャプチャをロードする必要があります。具体的な方法は、composer.json の require 配列にコード行「gregwar/captcha」:"1.*" を追加することです。次に、プロジェクトのルート ディレクトリで cmd を使用して、composer update コード行を実行します。この場合、ライブラリやミドルウェアがインストールされている場合でも同様です。そうすれば、自由にコードを書くことができます。
php: (以下の特定のルーティングについてはあまり詳しく説明しません。キーコードを書くだけです)
public function captcha($tmp) { //生成验证码图片的Builder对象,配置相应属性 $builder = new CaptchaBuilder; //可以设置图片宽高及字体 $builder->build($width = 100, $height = 40, $font = null); //获取验证码的内容 $phrase = $builder->getPhrase(); //把内容存入session Session::flash('milkcaptcha', $phrase); //生成图片 header("Cache-Control: no-cache, must-revalidate"); header('Content-Type: image/jpeg'); $builder->output(); }
Call of Blade テンプレート:
<img src="{{url('/captcha/1')}}" alt="" onclick="this.src='{{url('/captcha')}}/'+Math.random()" width="100" height="40" border="0">
これだけだと思ったら、あなたも本当に陽気すぎます単純。確認すると、すべてが間違っていることがわかります。
酸味があって爽やかじゃないですか? laravel5.2 では、すべてのセッションがコントローラーとメソッドを横断できないため、セッションはデフォルトでミドルウェアを介して再生成されます。心配しないでください。次の方法で解決できます。現在、私が知っている解決策は 2 つあります。1 つはミドルウェアを自分で構築し、そこにすべてのセッションを保存する方法ですが、少し面倒です。次に、laravelappHttpKernel.php に次のコードを追加します。ファイル内:
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Cookie\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class,
これで、安心してセッションを使用できます。以下の検証コードを検証する方法です
public function login_data() { $userInput = \Request::get('captcha'); if (Session::get('milkcaptcha') == $userInput) { //用户输入验证码正确,验证你自己密码用户名 echo 1; } else { //用户输入验证码错误 echo 2; } }
最後に、laravelの公式ドキュメントにはこのような落とし穴が事前に説明されていないので、開発者が開発がスムーズになりすぎるのではないかと心配しているからだと思います。
関連する推奨事項:
node.js+captchapng+jsonwebtoken を使用してログイン検証を完了する
captchapng を使用して Nodejs で画像検証コードを生成する例を共有する
以上がLaravel5.2はCaptchaを使用して認証コードを生成し、ログインメソッドを実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。