Laravel 로그 인 실패 횟수 제한 실현 방법

사용자 인증 의 경우 Laravel 은 내 장 된 인증 시스템 을 갖 추고 있다.우 리 는 요구 에 따라 쉽게 그것 을 수정 할 수 있다.인증 에 포 함 된 기능 중 하 나 는 Throttling 입 니 다.
왜 우 리 는 throttling 보호 가 필요 합 니까?
기본적으로 throttling 은 폭력 공격 을 보호 하 는 데 쓰 인 다.그것 은 일정 시간 내 에 로그 인 시 도 를 검사 할 것 이다.짧 은 로그 인 에서 throttling 은 사용자 나 로봇 이 실패 한 로그 인 시도 횟수 를 계산 합 니 다.
사용자 정의 로그 인 사용 제한
기본 적 인 상황 에서 내 장 된 인증 컨트롤 러 에서 제한 을 실현 합 니 다.하지만 사용자 정의 로그 인 이 필요 하 다 면?
사용자 정의 로그 인 제한 을 실현 하 는 것 은 매우 쉽다.우선,컨트롤 러 에 Throttles Logins trait 를 포함 시 켜 야 합 니 다.
use Illuminate\Foundation\Auth\ThrottlesLogins;
이제 이 Throttles Logins trait 를 컨트롤 러 에 추가 합 니 다.

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\ThrottlesLogins;
class AuthController extends Controller
{
 use ThrottlesLogins;
 ......
사용자 인증 에 사용 할 방법 으로 이동 합 니 다.나의 예 에서 나 는 login()POST 방법 을 사용 했다.다음 코드 를 붙 여 넣 습 니 다:

public function login(Request $request)
{
 // Authenticate Inputs
 $request->validate([
 'username' => 'required', 
 'password' => 'required|min:6|max:18'
 ]);
 // If the class is using the ThrottlesLogins trait, we can automatically throttle
 // the login attempts for this application. We'll key this by the username and
 // the IP address of the client making these requests into this application.
 if (method_exists($this, 'hasTooManyLoginAttempts') &&
 $this->hasTooManyLoginAttempts($request)) {
 $this->fireLockoutEvent($request);
 return $this->sendLockoutResponse($request);
 }
 
 .......
우선,사용자 가 제출 한 입력 을 검증 한 다음 에 hasTooManyLoginAttempts()방법 을 실 현 했 습 니 다.이 방법 은 사용자 가 특정한 시간 에 일정한 실패 시 도 를 실 행 했 는 지 확인 한 다음 시스템 은 sendLockoutResponse()를 통 해  방법 은 이 사용 자 를 막는다.
현재,우 리 는 increment LoginAttempts()방법 을 통 해 Throttles Logins trait 에 대한 실패 한 로그 인 시 도 를 지시 해 야 합 니 다.

if( Auth::attempt(['username' => $username, 'password' => $password]) ){
 // Redirect to appropriate dashboard 
}
else {
 // If the login attempt was unsuccessful we will increment the number of attempts
 // to login and redirect the user back to the login form. Of course, when this
 // user surpasses their maximum number of attempts they will get locked out.
 $this->incrementLoginAttempts($request);
 return redirect()->back()
  ->withInput($request->all())
  ->withErrors(['error' => 'Please check your username / password.']);
}
$maxAttempts 와$decay Minutes 속성 을 통 해 허용 되 는 최대 시도 횟수 와 제한 분 수 를 변경 할 수 있 습 니 다.여기 서 완전한 코드 를 찾 을 수 있 습 니 다.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\ThrottlesLogins;
class AuthController extends Controller
{
 use ThrottlesLogins;
 /**
  * The maximum number of attempts to allow.
  *
  * @return int
  */
 protected $maxAttempts = 5;
 /**
  * The number of minutes to throttle for.
  *
  * @return int
  */
 protected $decayMinutes = 1;
 public function login(Request $request)
 {
  // Authenticate Inputs
  $request->validate([
   'username' => 'required', 
   'password' => 'required|min:6|max:18'
  ]);
  // If the class is using the ThrottlesLogins trait, we can automatically throttle
  // the login attempts for this application. We'll key this by the username and
  // the IP address of the client making these requests into this application.
  if (method_exists($this, 'hasTooManyLoginAttempts') &&
   $this->hasTooManyLoginAttempts($request)) {
   $this->fireLockoutEvent($request);
   return $this->sendLockoutResponse($request);
  }
  $username = $request->username;
  $password = $request->password;
  
  if( Auth::attempt(['username' => $username, 'password' => $password]) ){
   // Redirect to appropriate dashboard 
  }
  else {
   // If the login attempt was unsuccessful we will increment the number of attempts
   // to login and redirect the user back to the login form. Of course, when this
   // user surpasses their maximum number of attempts they will get locked out.
   $this->incrementLoginAttempts($request);
   return redirect()->back()
    ->withInput($request->all())
    ->withErrors(['error' => 'Please check your username / password.']);
  }
 }
}
Related Posts:
총결산
Laravel 로그 인 실패 횟수 제한 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.Laravel 로그 인 실패 횟수 제한 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기