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

不言
リリース: 2023-03-31 22:06:02
オリジナル
1792 人が閲覧しました

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

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

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

インストールが完了したら、composer を使用してキャプチャをロードする必要があります。具体的な方法は、composer の require 配列にコード行「gregwar/captcha」:"1.*" を追加することです。 .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つは自分でミドルウェアを構築し、そこにすべてのセッションを保存する方法ですが、少し面倒です。次に、laravel\appに次の簡単な方法を紹介します。 \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 の公式ドキュメントにはそのような落とし穴が事前に説明されていないことに文句を言わなければなりません。開発者が開発に満足しすぎているのではないかと心配しています。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel での日時処理パッケージ Carbon の使用について

php 職人の移行についてlaravel 5.1の使い方

Laravelでログが書き込めない問題の解決方法

#

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート