Laravel 8 로그인에 대한 사용자 정의 만료로 기억하기를 구현하는 방법은 무엇입니까?
11255 단어 howphpauthenticationlaravel
이 게시물에서는 Laravel 로그인에 대한 사용자 정의 시간 만료로 기억하기 기능을 구현하는 방법을 공유합니다.
이전 게시물에서 세부 정보와 함께 나를 기억하는 방법에 대해 공유했습니다. 이제 사용자 정의 만료를 설정하는 방법을 다룰 것입니다. 기본적으로 Laravel은 아래에서 볼 수 있듯이 5년의 만료 기간을 제공하기 때문입니다.
좋아, 시작하자.
1 단계
제 previous post을 팔로우하세요. 이 게시물을 줄이고 간단하게 하기 위해 사용하고 있기 때문입니다.
2 단계
자세한 내용은 Traits로 해봅시다. PHP 설명서here를 참조하십시오.
3단계
Laravel 디렉토리 프로젝트의 App 폴더 안에 "Services"라는 이름의 새 폴더를 생성합니다.
4단계
"Services"폴더 안에 "Login"폴더를 만든 다음 파일을 만듭니다
RememberMeExpiration.php
.5단계
그런 다음 이 코드를 아래에 복사합니다.
<?php
namespace App\Services\Login;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie;
trait RememberMeExpiration
{
/**
* Set default minutes expiration
*
* @var int
*/
protected $minutesExpiration = 43200; //equivalent of 30 days
/**
* Customize the user logged remember me expiration
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
*/
public function setRememberMeExpiration($user)
{
Cookie::queue($this->getRememberMeSessionName(), encrypt($this->setRememberMeValue($user)), $this->minutesExpiration);
}
/**
* Generate remember me value
*
* @return string
*/
protected function setRememberMeValue($user)
{
return $user->id . "|" . $user->remember_token . "|" . $user->password;
}
/**
* Get remember me session name
*
* @return string
*/
protected function getRememberMeSessionName()
{
return Auth::getRecallerName();
}
}
위에서 볼 수 있듯이 $minutesExpiration이라는 보호된 속성이 있으므로 필요에 따라 사용자 지정할 수 있습니다.
6단계
LoginController에서 RememberMeExpiration 특성을 사용합시다.
7단계
다음은 완전한 LoginController 코드입니다.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LoginRequest;
use Illuminate\Support\Facades\Auth;
use App\Services\Login\RememberMeExpiration;
class LoginController extends Controller
{
use RememberMeExpiration;
/**
* Display login page.
*
* @return Renderable
*/
public function show()
{
return view('auth.login');
}
/**
* Handle account login request
*
* @param LoginRequest $request
*
* @return \Illuminate\Http\Response
*/
public function login(LoginRequest $request)
{
$credentials = $request->getCredentials();
if(!Auth::validate($credentials)):
return redirect()->to('login')
->withErrors(trans('auth.failed'));
endif;
$user = Auth::getProvider()->retrieveByCredentials($credentials);
Auth::login($user, $request->get('remember'));
if($request->get('remember')):
$this->setRememberMeExpiration($user);
endif;
return $this->authenticated($request, $user);
}
/**
* Handle response after user authenticated
*
* @param Request $request
* @param Auth $user
*
* @return \Illuminate\Http\Response
*/
protected function authenticated(Request $request, $user)
{
return redirect()->intended();
}
}
login() 메서드 내에서 위의 코드를 볼 수 있듯이 아래 3줄의 코드를 추가했습니다.
if($request->get('remember')):
$this->setRememberMeExpiration($user);
endif;
우리는 RememberMeExpiration 특성에서 setRememberMeExpiration() 메서드를 호출합니다.
이제 우리는 이미 remember me 만료를 사용자 정의했습니다. 이 튜토리얼이 도움이 되었으면 합니다. 아래에서 전체 소스 코드를 다운로드하여 테스트하고 사용할 수 있습니다.
이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/how-to-implement-remember-me-with-custom-expiration-to-your-laravel-8-login를 방문하십시오.
행복한 코딩 :)
Reference
이 문제에 관하여(Laravel 8 로그인에 대한 사용자 정의 만료로 기억하기를 구현하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codeanddeploy/how-to-implement-remember-me-with-custom-expiration-to-your-laravel-8-login-35mi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)