문서 메뉴
문서 홈
/ / /
Laravel MongoDB

사용자 인증

이 페이지의 내용

  • 개요
  • 사용자 모델 수정
  • 예제
  • 사용자 컨트롤러 만들기
  • 예제
  • 사용자 인증 사용자 지정
  • Laravel 생텀
  • 비밀번호 알림
  • 추가 정보

이 가이드에서는 Laravel의 네이티브 인증 기능을 사용하여 MongoDB 사용자를 인증하는 방법을 배울 수 있습니다.

Laravel은 사용자 인증 방법을 정의하는 가드 및 사용자 검색 방법을 정의하는 제공자와 같은 인증 서비스를 포함하는 네이티브 모듈을 제공합니다. 이러한 서비스에 대해 자세히 알아보려면 Auth 인증 을 참조하세요. Laravel 문서에서 확인할 수 있습니다.

기본적으로 Laravel은 App/Models 디렉토리에 User Eloquent 모델을 생성합니다. MongoDB 사용자에 대한 인증을 활성화하려면 User 모델이 MongoDB\Laravel\Auth\User 클래스를 확장해야 합니다.

이 클래스를 확장하려면 app/Models/User.php 파일로 이동하여 use Illuminate\Foundation\Auth\User as Authenticatable 문을 다음 코드로 바꿉니다.

use MongoDB\Laravel\Auth\User as Authenticatable;

다음으로, 다음 코드에 표시된 대로 User 클래스가 Authenticatable 를 확장하는지 확인합니다.

class User extends Authenticatable
{
...
}

User 모델을 구성한 후 해당 컨트롤러를 만듭니다. 컨트롤러를 생성하는 방법을 알아보려면 이 페이지 의 사용자 컨트롤러 생성 섹션을 참조하세요.

다음 코드는 MongoDB\Laravel\Auth\User 클래스를 확장하는 User.php 파일을 보여줍니다.

<?php
namespace App\Models;
use MongoDB\Laravel\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $connection = 'mongodb';
protected $collection = 'users';
protected $fillable = [
'name',
'email',
'password',
];
protected $hidden = [
'password',
'remember_token',
];
}

인증을 관리하는 함수를 저장하려면 User 모델에 대한 인증 컨트롤러를 만듭니다.

프로젝트 루트에서 다음 명령을 실행하여 컨트롤러를 만듭니다.

php artisan make:controller <filename>

다음 명령은 AuthController.php 이라는 컨트롤러 파일을 생성합니다.

php artisan make:controller AuthController

AuthController.php 파일은 다음 코드와 같이 사용자 인증을 관리하기 위한 login()logout() 함수를 저장할 수 있습니다.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;
use function response;
class AuthController extends Controller
{
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (Auth::attempt($request->only('email', 'password'))) {
return response()->json([
'user' => Auth::user(),
'message' => 'Successfully logged in',
]);
}
throw ValidationException::withMessages([
'email' => ['The provided credentials are incorrect.'],
]);
}
public function logout()
{
Auth::logout();
return response()->json(['message' => 'Successfully logged out']);
}
}

애플리케이션의 요구 사항에 맞게 인증 파일을 사용자 지정하고 추가 인증 기능을 활성화할 수 있습니다.

이 섹션에서는 다음 기능을 사용하여 MongoDB 사용자 인증 프로세스를 사용자 지정하는 방법을 설명합니다.

라라벨 생텀은 API 요청과 단일 페이지 애플리케이션 인증을 관리할 수 있는 인증 패키지입니다. API 요청을 관리하기 위해 생텀은 데이터베이스에 저장된 API 토큰을 발급하고 Authorization 헤더를 사용하여 들어오는 HTTP 요청을 인증합니다. 단일 페이지 애플리케이션을 인증하기 위해 생텀은 Laravel의 쿠키 기반 인증 서비스를 사용합니다.

Laravel 생텀을 설치하여 애플리케이션의 인증 프로세스를 관리할 수 있습니다. 프로젝트 루트에서 다음 명령을 실행하여 Laravel 생텀을 설치하고 마이그레이션 파일을 게시합니다.

composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Laravel MongoDB와 함께 Laravel 생텀을 사용하려면 MongoDB\Laravel\Eloquent 네임스페이스의 DocumentModel 트레이트를 사용하도록 생텀에서 제공하는 PersonalAccessToken 모델을 수정합니다. 다음 코드는 PersonalAccessToken 모델을 수정하여 MongoDB를 활성화합니다.

<?php
namespace App\Models;
use Laravel\Sanctum\PersonalAccessToken as SanctumToken;
use MongoDB\Laravel\Eloquent\DocumentModel;
class PersonalAccessToken extends SanctumToken
{
use DocumentModel;
protected $connection = 'mongodb';
protected $collection = 'personal_access_tokens';
protected $primaryKey = '_id';
protected $keyType = 'string';
}

다음으로, 다음 명령을 실행하여 데이터베이스 스키마를 수정합니다.

php artisan migrate

이제 애플리케이션의 서비스 제공자 중 하나에서 메서드를 호출하여 사용자 지정 PersonalAccessToken 모델을 사용하도록 생텀에 지시할 수 있습니다. 자세히 알아보려면 usePersonalAccessTokenModel() 기본 모델 재정의 를 참조하세요. Laravel 생텀 가이드에서 확인 가능합니다.

DocumentModel 특성에 대해 자세히 알아보려면 Eloquent 모델 클래스 가이드의 타사 모델 클래스 확장 을 참조하세요.

MongoDB 기반 비밀번호 알림에 대한 지원을 추가하려면 애플리케이션에 다음 서비스 제공자를 등록하세요.

MongoDB\Laravel\Auth\PasswordResetServiceProvider::class

이 서비스 제공자는 비밀번호 미리 알림을 사용하도록 내부 DatabaseReminderRepository 을(를) 수정합니다.

다음 코드는 Laravel 애플리케이션의 bootstrap 디렉토리에 있는 providers.php 파일을 업데이트하여 PasswordResetServiceProvider 제공자를 등록합니다.

return [
App\Providers\AppServiceProvider::class,
MongoDB\Laravel\MongoDBServiceProvider::class,
MongoDB\Laravel\Auth\PasswordResetServiceProvider::class
];

사용자 인증에 대해 자세히 알아보려면 인증 을 참조하세요. Laravel 문서에서 확인할 수 있습니다.

Eloquent 모델에 대해 자세히 알아보려면 Eloquent 모델 클래스 가이드를 참조하세요.

돌아가기

쿼리 빌더

다음

캐시 및 잠금