ホームページ  >  記事  >  バックエンド開発  >  Laravel5.2ではCaptchaを使用して認証コードを生成し、ログインを実現します。

Laravel5.2ではCaptchaを使用して認証コードを生成し、ログインを実現します。

jacklove
jackloveオリジナル
2018-07-03 17:57:051839ブラウズ

この記事では主にLaravel5.2のCaptchaを利用した検証コード(セッションピット)の生成方法を紹介していますので、必要な方は参考にしてください

最近、友人からlaravelの検証コードログインを手伝ってほしいと頼まれました。それで少し調べてみました。 (laravelの使い方をほとんど忘れてしまいました)

まず、laravelのインストールについて詳しく説明する必要はありませんが、私のバージョンは5.2.45です(注:laravel 5.2.6以上のバージョンのミドルウェアはインストールできます)自動的にロードされます)、これは依然として非常に重要です。

インストールが完了したら、composer を使用してキャプチャをロードする必要があります。具体的な方法は、コード行 "gregwar/captcha":"1.*" をコンポーザの require 配列に追加することです。 .json 。次に、プロジェクトのルート ディレクトリで 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();
}

bladeテンプレートコール:

<img src="{{url(&#39;/captcha/1&#39;)}}" alt="" onclick="this.src=&#39;{{url(&#39;/captcha&#39;)}}/&#39;+Math.random()" width="100" height="40" border="0">

これで終わりだと思うなら、あなたは本当に陽気すぎて単純です。確認すると、すべてが間違っていることがわかります。

すごく酸っぱくないですか? laravel5.2では、すべてのセッションがコントローラとメソッドをまたぐことはできないため、クロスした場合はセッションが再生成され、デフォルトではセッションはミドルウェアを経由する必要があります。心配しないでください。次の方法で解決します。現在、私が知っている解決策は 2 つあります。1 つは、ミドルウェアを自分で構築し、そこにすべてのセッションを格納する方法ですが、少し面倒です。次に、簡単な方法を紹介します。 \Http\Kernel.php ファイルの $middleware に次のコードを追加します。

\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(&#39;captcha&#39;);
  if (Session::get(&#39;milkcaptcha&#39;) == $userInput) {
    //用户输入验证码正确,验证你自己密码用户名
    echo 1;
  } else {
    //用户输入验证码错误
    echo 2;
  }
}

最後に、laravel の公式ドキュメントについて苦情を言わなければなりませんが、このような落とし穴は事前に説明されていません。開発者がこの開発に満足しすぎているのではないかと心配しています。

概要

上記は、Captcha を使用してログイン (セッションピット) を実現するための検証コードを生成する編集者の Laravel5.2 の紹介です。ご質問がございましたら、メッセージを残していただければ、編集者が時間内に返信させていただきます。また、php 中国語 Web サイトをサポートしていただきありがとうございます。

興味があるかもしれない記事:

PHP ソート アルゴリズム シリーズのバケット ソートの詳細な説明

##PHP ソート アルゴリズム シリーズ マージ Sort_php スキルの詳細説明

PHP ソート アルゴリズム シリーズ 直接選択ソートの詳細説明

# ##############################

以上がLaravel5.2ではCaptchaを使用して認証コードを生成し、ログインを実現します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。