>  기사  >  PHP 프레임워크  >  Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)

Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)

藏色散人
藏色散人앞으로
2020-01-30 20:45:392766검색

Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)

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(&#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;);
 });

참고: 일반적으로 필요한 인증 미들웨어 ID를 모두 전달할 수 있습니다. 이 데모에서는 인증 경로가 함께 집계됩니다.

이를 사용하여 로그인하면 /home으로 리디렉션됩니다. 거기에서 /settings/ssh/create로 이동하면 비밀번호를 입력하라는 메시지가 표시됩니다.

Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)

이 튜토리얼을 따랐다면 secret 을 입력하고 양식을 제출한 후 생성 보기로 들어갑니다. 비밀번호를 확인하면 메시지를 표시하지 않고 이 페이지를 새로 고칠 수 있습니다.

새 ddd() 도우미 함수를 사용하여 SSHController::create() 메서드에 추가하면 다음 메시지가 표시될 때 이 메서드가 auth.password_confirmed_at의 세션 값을 결정합니다.

public function create()
 {
 ddd(session(&#39;auth&#39;));
 return view(&#39;secret&#39;);
 }

Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)

비밀번호가 마지막으로 확인되었습니다. 기본적으로 사용자는 3시간 이내에 비밀번호를 다시 확인하라는 알림을 받지 않습니다. 물론 config('auth.password_timeout') 구성 항목을 수정하여 사용자 정의할 수 있습니다. (구성 항목은 Laravel의 config/auth.에 정의되어 있습니다.) v6.2.0.php 구성 파일).

laravel 프레임워크와 관련된 더 많은 기술 기사를 보려면 laravel 튜토리얼 칼럼을 방문하세요!

위 내용은 Laravel 6.2의 사용자 로그인을 위한 새로운 비밀번호 확인 프로세스(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제