>  기사  >  PHP 프레임워크  >  Laravel이 인증을 수행하는 방법

Laravel이 인증을 수행하는 방법

PHPz
PHPz원래의
2023-04-13 18:12:081220검색

Laravel은 현재 가장 인기 있는 PHP 프레임워크 중 하나입니다. 많은 기능을 제공하지만 가장 일반적으로 사용되는 기능은 사용자 인증 및 권한 부여입니다. Laravel은 모든 Laravel 애플리케이션에 쉽게 통합될 수 있는 풍부하면서도 간단한 인증 시스템을 제공합니다. 이 글에서는 라라벨이 인증을 수행하는 방법을 소개합니다.

Laravel 인증의 기본 개념

Laravel 인증은 로그인, 등록, 로그아웃 등의 작업을 처리하는 데 사용할 수 있는 다양한 경로와 방법을 제공합니다. 더 자세한 내용을 논의하기 전에 Laravel 인증의 기본 개념을 이해해야 합니다.

사용자 모델: Laravel은 사용자 모델을 사용하여 사용자를 나타냅니다. Laravel에서 사용자 모델을 생성하는 것은 매우 간단합니다. artisan 명령을 실행하기만 하면 됩니다: php artisan make:model User

Guard(Guard): Laravel에서 가드는 웹이나 API와 같은 특정 인증 계층을 지정하는 데 사용되는 이름입니다.

서비스 제공자: 서비스 제공자는 Laravel 프레임워크의 가장 기본적인 구성 요소 중 하나입니다. 각 서비스 공급자는 서비스를 등록하거나 인터페이스 및 구현을 바인딩하는 데 사용됩니다.

인증 제공자: 인증 제공자는 인증의 실제 구현자입니다. Laravel은 기본적으로 사용자 자격 증명을 인증하기 위해 사용자 모델을 사용하는 EloquentAuthenticationProvider를 사용합니다.

Laravel에서 인증하는 방법

이제 Laravel 인증의 기본 개념을 이해했으므로 Laravel에서 인증하는 방법을 다룰 수 있습니다. Laravel에서 인증하는 데는 여러 단계가 있습니다:

1단계: Guard 구성

Laravel 인증을 사용하려면 먼저 config/auth.php 파일에서 Guard를 구성해야 합니다. Guard를 사용하면 애플리케이션에서 웹 인증 및 API 인증과 같은 다양한 인증 구성을 지정할 수 있습니다. Laravel은 다음 Guards를 미리 정의합니다:

  • web: 세션 기반 웹 애플리케이션용.
  • api: 상태 비저장 API용.

Guard 구성은 간단한 과정입니다. config/auth.php 파일에서 Guards 배열을 찾아 다음 콘텐츠를 추가합니다.

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

위 코드에서는 web과 api라는 두 개의 Guard를 정의합니다.

2단계: 인증된 사용자 모델 정의

Laravel에서는 확인을 위해 사용자 모델이 필요합니다. Laravel의 기본 구성을 사용하는 경우 이미 User라는 모델이 있으므로 정의할 필요가 없습니다. 다른 경우에는 사용자 모델에 대한 테이블과 인증 필드를 지정해야 합니다.

protected $table = 'your_user_table_name';

public function getAuthPassword()
{
    return $this->your_password_column_name;
}

3단계: 인증 경로 생성

web.php 파일에서 인증 경로 세트를 빠르게 생성할 수 있습니다. 이 경로 집합은 등록, 로그인 및 로그아웃과 같은 작업을 제공합니다. 다음 코드 예제는 Laravel에서 인증 경로를 생성하는 방법을 보여줍니다:

Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

4단계: 인증 컨트롤러 생성

이제 인증 경로에 대한 컨트롤러를 생성해야 합니다. make:auth Artisan 명령을 사용하여 기본 컨트롤러와 경로를 빠르게 생성할 수 있습니다. 그러면 다음 파일이 생성됩니다:

  • app/Http/Controllers/Auth/LoginController.php
  • app/Http/Controllers/Auth/RegisterController.php
  • app/Http/Controllers/Auth/ResetPasswordController.php
  • app /Http/Controllers/Auth/ForgotPasswordController.php
  • resources/views/auth/login.blade.php
  • resources/views/auth/register.blade.php
  • resources/views/auth/passwords/email.blade. php
  • resources/views/auth/passwords/reset.blade.php

이제 이러한 컨트롤러와 보기에서 적절하게 사용자 정의할 수 있습니다.

5단계: 인증 공급자 설정

AuthenticationProvider는 사용자 자격 증명을 확인하는 데 사용되는 클래스입니다. Laravel에서는 기본적으로 EloquentAuthenticationProvider가 사용됩니다. 인증 공급자에 대한 사용자 모델 및 인증 필드를 지정합니다.

protected $model;

public function __construct(User $model)
{
    $this->model = $model;
}

public function retrieveById($identifier)
{
    return $this->model->find($identifier);
}

public function retrieveByCredentials(array $credentials)
{
    return $this->model->where('email', $credentials['email'])->first();
}

public function validateCredentials(UserContract $user, array $credentials)
{
    return Hash::check($credentials['password'], $user->getAuthPassword());
}

위 코드는 기본 EloquentAuthenticationProvider 공급자이며 이를 기반으로 사용자 정의할 수 있습니다. 물론 자신만의 Provider를 구현할 수도 있습니다.

6단계: 인증을 위해 Auth 파사드 사용

Laravel에서는 Auth 파사드를 사용하여 사용자 인증을 구현할 수 있습니다. 인증인증을 통해 사용자의 로그인 여부, 인증 여부 등을 쉽게 확인할 수 있습니다.

로그인 여부 확인

if (Auth::check()) {
    // 已经登录,继续操作
} else {
    // 未登录,跳转到登录页面
    return redirect('login');
}

인증 수행

$credentials = [
    'email' => $email,
    'password' => $password,
];

if (Auth::attempt($credentials)) {
    // 验证成功
} else {
    // 验证失败
}

로그아웃

Auth::logout();

모든 단계를 완료한 후 Laravel에서 사용자 인증을 구현할 수 있습니다. 이제 Laravel의 주요 인증 개념과 프로세스를 이해했으므로 이를 사용하여 자신의 애플리케이션에 강력하면서도 간단한 사용자 인증을 제공할 수 있습니다.

위 내용은 Laravel이 인증을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.