Laravel은 로그인한 사용자가 경로에 액세스하기 전에 비밀번호를 다시 입력하도록 요구할 수 있는 새로운 비밀번호 확인 기능을 추가하는 v6.2를 출시했습니다.
이 기능은 민감한 작업을 수행할 때 나타나는 GitHub 확인 대화 상자와 유사합니다. Laravel에서 쉽게 설정할 수 있으므로 작동 방식을 더 잘 이해할 수 있도록 새로운 기능을 시험해 보겠습니다.
Setup
먼저, 이 새로운 기능을 보다 직관적으로 이해하기 위해 새로운 Laravel 애플리케이션을 만듭니다. :
laravel new confirm-app cd confirm-app composer require laravel/ui --dev
아시다시피 Laravel 6에서는 make:auth 명령이 제거되었으며, 동일한 기능이 공식 확장 패키지 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
Factory() 메서드를 통해 제어할 수 있습니다. 테스트 사용자:
php artisan tinker >>> $user = factory(App\User::class)->create([ ... 'password' => bcrypt('secret'), ... 'email' => 'admin@example.com' ... ]);
컨트롤러 작성
SSH 키 추가와 같은 관리 작업을 보기 전에 사용자가 비밀번호를 다시 확인하도록 한다고 가정해 보겠습니다. 우리는 사용자가 구성된 기간(기본값은 3시간) 내에 비밀번호를 다시 입력하기를 원합니다.
가짜 /settings/ssh/create 경로를 생성합니다. 여기에는 사용자가 새 키를 생성하기 전에 새 비밀번호.confirm 미들웨어가 필요합니다.
php artisan make:controller Settings/SSHController
다음으로 create() 메소드를 생성합니다. Controller:
namespace App\Http\Controllers\Settings; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class SSHController extends Controller { public function create() { return view('secret'); } }
비밀 템플릿을 스텁하여 보기 경로의 루트 디렉터리에 배치합니다 resources/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
Code의 코드에서는 auth/ 파일을 복사해야 합니다. ui/confirm.stub에서 복사할 파일을 가져올 수 있습니다. 이 파일을 복사하여 프로젝트에 추가하세요. 다음 경로는
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'); });
참고: 일반적으로 필요한 인증 미들웨어 ID를 모두 전달할 수 있습니다. 이 데모에서는 인증 경로가 함께 집계됩니다.
이를 사용하여 로그인하면 /home으로 리디렉션됩니다. 거기에서 /settings/ssh/create로 이동하면 비밀번호를 입력하라는 메시지가 표시됩니다.
이 튜토리얼을 따랐다면 secret 을 입력하고 양식을 제출한 후 생성 보기로 들어갑니다. 비밀번호를 확인하면 메시지를 표시하지 않고 이 페이지를 새로 고칠 수 있습니다.
새 ddd() 도우미 함수를 사용하여 SSHController::create() 메서드에 추가하면 다음 메시지가 표시될 때 이 메서드가 auth.password_confirmed_at의 세션 값을 결정합니다.
public function create() { ddd(session('auth')); return view('secret'); }
비밀번호가 마지막으로 확인되었습니다. 기본적으로 사용자는 3시간 이내에 비밀번호를 다시 확인하라는 알림을 받지 않습니다. 물론 config('auth.password_timeout') 구성 항목을 수정하여 사용자 정의할 수 있습니다. (구성 항목은 Laravel의 config/auth.에 정의되어 있습니다.) v6.2.0.php 구성 파일).
laravel 프레임워크와 관련된 더 많은 기술 기사를 보려면 laravel 튜토리얼 칼럼을 방문하세요!
위 내용은 Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!