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('Settings') ->middleware(['auth']) ->group(function () { Route::get('/settings/ssh/create', 'SSHController@create')->middleware('password.confirm'); });
注: 通常、認証ミドルウェアを介して認証を必要とするすべてのルートを集約できます。このデモでは、Settings 名前空間にコントローラーを作成しました。
これにより、ログインすると、/home にリダイレクトされます。そこで /settings/ssh/create に移動すると、パスワードの入力を求められます:
このチュートリアルに従う場合は、シークレットを入力し、フォームを送信して、作成ビューに入ります。パスワードを確認したら、プロンプトを表示せずにこのページを更新できます。
新しい ddd() ヘルパー関数を使用し、SSHController::create() メソッドに追加します。このメソッドは、次回プロンプトが表示されたときに auth.password_confirmed_at のセッションの値を決定します。
パスワードが確認されたのはこれが最後です。デフォルトでは、ユーザーは 3 時間以内にパスワードを再確認するように通知されませんが、config('auth.password_timeout') 設定項目を変更することでカスタマイズすることもできます (設定項目は Laravel の config/auth. で定義されています)。 v6.2.0.php 設定ファイル)。 laravel フレームワークに関連する技術的な記事については、laravel チュートリアル 列をご覧ください。
以上がLaravel 6.2でのユーザーログインの新しいパスワード確認プロセス(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。