ホームページ  >  記事  >  PHPフレームワーク  >  Laravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)

Laravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)

藏色散人
藏色散人転載
2020-01-30 20:45:392709ブラウズ

Laravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)

Laravel は、ログインしているユーザーがルートにアクセスする前にパスワードの再入力を要求できる新しいパスワード確認機能を追加した v6.2 をリリースしました。

この機能は、機密性の高い操作を実行する場合の GitHub の確認ダイアログ ボックスに似ています。これは Laravel で簡単に設定できるので、どのように機能するかをよりよく理解するために新しい機能を試してみましょう:

SETUP

まず、理解するためにこの新機能をより直観的に理解するには、新しい Laravel アプリケーションを作成します:

laravel new confirm-app
cd confirm-app
composer require laravel/ui --dev

ご存知のとおり、make:auth コマンドは Laravel 6 で削除され、同じ機能が laravel/ui に移行されました。新しいコマンドを使用して、ユーザー認証関連のコードを生成しましょう:

 php artisan ui vue --auth
 yarn install
 yarn dev

次に、SQLite データベースを構成します (もちろん、使用するデータベースを選択できます)。

touch database/database.sqlite

sqlite ドライバーを使用するときに Laravel に必要なデフォルトの構成ファイルを作成しましたが、データベース接続とパスが正しいことを確認するために .env ファイルを更新する必要があります。

DB_CONNECTION=sqlite
# ...
# 使用 sqlite 驱动程序的默认路径
# DB_DATABASE=laravel

次に、移行を実行してテスト ユーザーを作成しましょう:

php artisan migrate

ファクトリー() を通じてコン​​ソールで作成できます。メソッド テスト ユーザー:

 php artisan tinker
 >>> $user = factory(App\User::class)->create([
 ... 'password' => bcrypt('secret'),
 ... 'email' => 'admin@example.com'
 ... ]);

コントローラーを作成します。

ユーザーに、事前に SSH キーの追加などの管理アクションを表示させたいとします。パスワードを再確認します。ユーザーには、設定された時間内 (デフォルトは 3 時間) 内にパスワードを再入力してもらいたいと考えています。

偽の /settings/ssh/create ルートを作成します。このルートには新しいパスワードが必要です。ユーザーが新しいキーを作成する前にミドルウェアを確認してください:

php artisan make:controller Settings/SSHController

次に、このコントローラーにメソッド create() を作成します。

 namespace App\Http\Controllers\Settings;
  
  use App\Http\Controllers\Controller;
  use Illuminate\Http\Request;
  
  class SSHController extends Controller
  {
  public function create()
  {
 return view('secret');
 }
 }

シークレット テンプレートをスタブにし、ビュー パスのルートにある resource/views/secret ディレクトリに配置します。 .blade.php:

  @extends('layouts.app')
  @section('content')
  <div class="container">
  <div class="row justify-content-center">
  <div class="col-md-8">
  <h1>Add a New SSH Key</h1>
  <p>This page is only shown after password confirmation.</p>
  </div>
  </div>
 </div>
 @endsection

コーディングするときは、ファイル auth/passwords/confirm.blade.php をプロジェクトにコピーする必要があります。コピーするファイルはここで入手できます: ui/このファイルをコピーして、次のパスのプロジェクトに追加します:

resources/views/auth/passwords/confirm.blade.php

次に、routes/ でルートを定義する必要があります。web.php ファイルの最後で、その必要性について言及します。このミドルウェアの場合:

 Route::namespace(&#39;Settings&#39;)
 ->middleware([&#39;auth&#39;])
 ->group(function () {
 Route::get(&#39;/settings/ssh/create&#39;, &#39;SSHController@create&#39;)->middleware(&#39;password.confirm&#39;);
 });

注: 通常、認証ミドルウェアを介して認証を必要とするすべてのルートを集約できます。このデモでは、Settings 名前空間にコントローラーを作成しました。

これにより、ログインすると、/home にリダイレクトされます。そこで /settings/ssh/create に移動すると、パスワードの入力を求められます:

Laravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)

このチュートリアルに従う場合は、シークレットを入力し、フォームを送信して、作成ビューに入ります。パスワードを確認したら、プロンプトを表示せずにこのページを更新できます。

新しい ddd() ヘルパー関数を使用し、SSHController::create() メソッドに追加します。このメソッドは、次回プロンプトが表示されたときに auth.password_confirmed_at のセッションの値を決定します。

Laravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)

パスワードが確認されたのはこれが最後です。デフォルトでは、ユーザーは 3 時間以内にパスワードを再確認するように通知されませんが、config('auth.password_timeout') 設定項目を変更することでカスタマイズすることもできます (設定項目は Laravel の config/auth. で定義されています)。 v6.2.0.php 設定ファイル)。

laravel フレームワークに関連する技術的な記事については、

laravel チュートリアル 列をご覧ください。

以上がLaravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。