Laravel 로그 인 실패 횟수 제한 실현 방법
왜 우 리 는 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 로그 인 실패 횟수 제한 에 관 한 더 많은 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.