Laravel 8에서 사용자를 금지/일시 중단하는 방법

이제 Laravel 8에는 기본적으로 인증 시스템이 포함되어 있지 않습니다. laravel/ui 패키지를 사용하여 설치할 수 있습니다.
인증에서 모든 사용자를 금지하는 일반적인 기능은 Laravel에서 누락되었습니다.

다음은 애플리케이션에서 사용자를 금지한 후의 로그인 양식 Will의 모습입니다.


결과를 달성하기 위한 단계


1단계 - 사용자 테이블에 새 열 '상태' 추가



아래 명령을 실행하여 마이그레이션을 생성합니다.

  php artisan make:migration add_status_to_users_table


마이그레이션 파일이 생성된 후 up() 함수에서 다음 코드를 업데이트합니다.

      Schema::table('users', function (Blueprint $table) {
         $table->integer('status')->default(1);
      });


app\Models\User.php의 Fillable에 'status' 추가

      protected $fillable = [
        'name',
        'email',
        'password',
        'status'
    ];


2단계 - 미들웨어 생성 - CheckBanned



아래 명령어를 실행하여 미들웨어를 생성합니다.

      php artisan make:middleware CheckBanned


app/Http/CheckBanned.php에서 핸들 메소드를 대체하십시오.

    public function handle(Request $request, Closure $next)
    {
        if(auth()->check() && (auth()->user()->status == 0)){
            Auth::logout();

            $request->session()->invalidate();

            $request->session()->regenerateToken();

            return redirect()->route('login')->with('error', 'Your Account is suspended, please contact Admin.');

        }

        return $next($request);
    }


3단계 - 미들웨어 등록 - app/Http/Kernel.php



IN 'web' 미들웨어 그룹에서 아래 코드를 입력하여 CheckBanned 미들웨어를 등록합니다.

    \App\Http\Middleware\CheckBanned::class,


4단계 - 로그인 페이지에 오류를 표시합니다.



로그인 블레이드 'resources/views/auth/login.blade.php' 열기

오류 메시지를 표시하려면 다음 코드를 추가하십시오.

  @if (session('error'))
     <div class="alert alert-danger">
         {{ session('error') }}
     </div>
  @endif


출력 결과는 다음과 같습니다.





자세한 설명은 비디오를 볼 수 있습니다


읽어 주셔서 감사합니다.
나에게 연락

좋은 웹페이지 즐겨찾기