Laravel을 사용한 사용자 인증 및 권한 부여: 애플리케이션 보안

WBOY
풀어 주다: 2023-08-12 23:55:53
원래의
1551명이 탐색했습니다.

Laravel을 사용한 사용자 인증 및 권한 부여: 애플리케이션 보안

Laravel을 사용한 사용자 인증 및 권한 부여: 애플리케이션 보안 보호

인용문:

많은 웹 애플리케이션에서 사용자 인증 및 권한 부여는 데이터 보안 및 액세스 제어의 중요한 구성 요소입니다. Laravel 프레임워크는 사용자 인증 및 권한 부여를 처리하는 강력하고 유연한 메커니즘을 제공하므로 개발자는 무단 액세스로부터 애플리케이션을 쉽게 보호할 수 있습니다.

이 글에서는 Laravel의 인증 및 권한 부여 기능을 사용하여 애플리케이션을 보호하는 방법을 소개하고 몇 가지 실용적인 코드 예제를 제공합니다.

1. 사용자 인증

사용자 인증은 사용자가 합법적인 애플리케이션 사용자인지 확인하기 위해 사용자의 신원을 확인하는 프로세스입니다. 라라벨은 사용자 등록, 로그인, 비밀번호 재설정 등의 기능을 쉽게 구현할 수 있는 인증 시스템을 내장하고 있습니다.

  1. 사용자 모델 및 데이터베이스 마이그레이션 설정

먼저 사용자 모델과 해당 데이터베이스 마이그레이션을 생성해야 합니다. 사용자 모델 및 데이터베이스 마이그레이션을 생성하려면 터미널에서 다음 명령을 실행하세요.

php artisan make:model User -m
로그인 후 복사

이렇게 하면 앱 디렉터리에 User.php 모델 파일이 생성되고 사용자 테이블을 생성하기 위한 데이터베이스/마이그레이션 디렉터리에 데이터베이스 마이그레이션 파일이 생성됩니다.

생성된 마이그레이션 파일을 편집하고 up() 메서드의 코드를 다음과 같이 변경합니다.

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}
로그인 후 복사

그런 다음 마이그레이션 명령을 실행하여 사용자 테이블을 생성합니다.

php artisan migrate
로그인 후 복사
로그인 후 복사
  1. 인증 컨트롤러를 생성하고 보기

다음으로 우리는 인증 컨트롤러를 생성해야 하며 해당 뷰는 사용자 등록, 로그인, 비밀번호 재설정과 같은 작업을 처리합니다. 인증 컨트롤러를 생성하려면 다음 명령을 실행하세요:

php artisan make:controller AuthController
로그인 후 복사

생성된 AuthController 컨트롤러에서 Laravel의 내장 AuthTraits를 사용하여 인증 로직을 처리할 수 있습니다. 컨트롤러에 다음 네임스페이스를 도입했는지 확인하세요.

use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthResetsPasswords;
로그인 후 복사

그런 다음 AuthController에서 사용자 인증을 처리하기 위한 몇 가지 메서드를 정의할 수 있습니다. 다음은 일반적으로 사용되는 방법의 몇 가지 예입니다.

// 注册用户
public function register(Request $request)
{
    // 实现用户注册逻辑
}

// 用户登录
public function login(Request $request)
{
    // 实现用户登录逻辑
}

// 用户登出
public function logout(Request $request)
{
    // 实现用户登出逻辑
}

// 密码重置
public function resetPassword(Request $request)
{
    // 实现密码重置逻辑
}
로그인 후 복사

또한 등록, 로그인 및 비밀번호 재설정 양식을 표시하기 위한 몇 가지 뷰를 만들어야 합니다. 이러한 뷰는 다음 명령을 사용하여 생성할 수 있습니다:

php artisan make:auth
로그인 후 복사

위 명령을 실행한 후 Laravel은 Register.blade.php, login.blade.php, 비밀번호 폴더 등을 포함한 관련 뷰 파일을 자동으로 생성합니다.

  1. 라우팅 설정

위 단계를 완료한 후 사용자 인증 요청을 처리할 수 있도록 해당 라우팅을 구성해야 합니다. 경로/web.php 파일에 다음 예제 경로를 추가할 수 있습니다.

// 显示注册表单
Route::get('/register', 'AuthController@showRegistrationForm')->name('register');
// 处理用户注册
Route::post('/register', 'AuthController@register');

// 显示登录表单
Route::get('/login', 'AuthController@showLoginForm')->name('login');
// 处理用户登录
Route::post('/login', 'AuthController@login');

// 用户登出
Route::post('/logout', 'AuthController@logout')->name('logout');

// 显示密码重置链接请求表单
Route::get('/password/reset', 'AuthController@showLinkRequestForm')->name('password.request');
// 处理密码重置链接请求
Route::post('/password/email', 'AuthController@sendResetLinkEmail')->name('password.email');

// 显示密码重置表单
Route::get('/password/reset/{token}', 'AuthController@showResetForm')->name('password.reset');
// 处理密码重置请求
Route::post('/password/reset', 'AuthController@resetPassword')->name('password.update');
로그인 후 복사

이제 사용자 인증에 필요한 기본 구성이 완료되었습니다. 브라우저에서 해당 URL에 접속하면 이러한 기능을 사용하여 비밀번호를 등록, 로그인 및 재설정할 수 있습니다.

2. 사용자 인증

사용자 인증은 사용자가 특정 리소스에 액세스하거나 특정 작업을 수행할 수 있는 권한이 있는지 확인하는 프로세스입니다. Laravel의 권한 부여 기능은 사용자의 신원 정보와 역할을 기반으로 권한을 결정하고 간단하고 사용하기 쉬운 권한 제어 메커니즘을 제공합니다.

  1. 권한 모델 정의 및 데이터베이스 마이그레이션

먼저 권한 모델과 해당 데이터베이스 마이그레이션을 생성해야 합니다. 권한 모델 및 데이터베이스 마이그레이션을 생성하려면 터미널에서 다음 명령을 실행하세요.

php artisan make:model Permission -m
로그인 후 복사

그러면 앱 디렉터리에 Permission.php 모델 파일이 생성되고 권한 테이블 생성을 위한 데이터베이스/마이그레이션 디렉터리에 데이터베이스 마이그레이션 파일이 생성됩니다.

생성된 마이그레이션 파일을 편집하고 up() 메서드의 코드를 다음과 같이 변경합니다.

public function up()
{
    Schema::create('permissions', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('slug');
        $table->timestamps();
    });
}
로그인 후 복사

그런 다음 마이그레이션 명령을 실행하여 권한 테이블을 생성합니다.

php artisan migrate
로그인 후 복사
로그인 후 복사
  1. 인증 정책 및 미들웨어 생성

다음으로 우리는 사용자 역할과 권한 간의 관계를 정의하는 권한 부여 정책을 만들고, 사용자가 특정 리소스에 액세스할 수 있는 권한이 있는지 확인하는 권한 부여 미들웨어를 만들어야 합니다.

다음 명령을 실행하여 인증 정책을 생성하세요.

php artisan make:policy PostPolicy
로그인 후 복사

생성된 PostPolicy 파일에서 사용자에게 특정 리소스에 대한 액세스 권한이 있는지 확인하는 몇 가지 방법을 정의할 수 있습니다. 예는 다음과 같습니다.

public function view(User $user, Post $post)
{
    // 判断用户是否有权限查看指定的文章
    return $user->can('view-post');
}
로그인 후 복사

그런 다음 사용자 권한을 확인하기 위해 인증 미들웨어를 만들어야 합니다. 다음 명령을 실행하여 미들웨어를 생성하세요.

php artisan make:middleware CheckPermission
로그인 후 복사

생성된 CheckPermission 미들웨어 파일에서 사용자에게 특정 리소스에 대한 액세스 권한이 있는지 확인하는 몇 가지 사용자 지정 논리를 구현할 수 있습니다. 예는 다음과 같습니다.

public function handle($request, Closure $next, $permission)
{
    if (! $request->user()->can($permission)) {
        abort(403, 'Unauthorized');
    }

    return $next($request);
}
로그인 후 복사
  1. 인증 정책 및 미들웨어 구성

위 단계를 완료한 후 관련 모델 및 경로에서 인증 정책 및 미들웨어도 구성해야 합니다.

app/Providers/AuthServiceProvider.php 파일에 인증 정책을 등록해야 합니다. $policies 속성을 찾아 다음 코드를 추가하세요:

protected $policies = [
    'AppMode' => 'AppPoliciesModePolicy',
];
로그인 후 복사

routes/web.php 파일에서 middleware() 메서드를 사용하여 인증 미들웨어를 적용할 수 있습니다. 다음은 예시입니다.

Route::group(['middleware' => 'auth'], function () {
    Route::get('/posts/{post}', 'PostController@show')->middleware('can:view,post');
});
로그인 후 복사

위 예시에서는 'middleware' 키 값에 해당하는 값을 'can:view,post'로 설정했는데, 이는 지정된 경로에 접근할 때 'auth' 미들웨어가 먼저 사용자 신원을 확인하기 위해 적용된 다음 사용자에게 특정 리소스에 액세스할 수 있는 권한이 있는지 확인합니다.

요약:

사용자 인증 및 승인을 위해 Laravel을 사용하는 것은 애플리케이션 보안 및 액세스 제어를 보호하는 중요한 단계입니다. Laravel에 내장된 인증 시스템과 권한 부여 기능을 통해 개발자는 사용자 등록, 로그인, 비밀번호 재설정 및 기타 기능을 쉽게 구현할 수 있으며 사용자가 액세스하는 리소스가 권한 부여 정책 및 미들웨어를 통해 합법적이고 보호되는지 확인할 수 있습니다. 위의 내용은 간단한 데모이므로 실제 필요에 따라 추가로 사용자 정의하고 확장할 수 있습니다.

참조 링크: https://laravel.com/docs/authentication

위 내용은 Laravel을 사용한 사용자 인증 및 권한 부여: 애플리케이션 보안의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿