Laravel 8 로그인에 대한 사용자 정의 만료로 기억하기를 구현하는 방법은 무엇입니까?

원래 게시된 @https://codeanddeploy.com 방문하여 샘플 코드 다운로드: https://codeanddeploy.com/blog/laravel/how-to-implement-remember-me-with-custom-expiration-to-your-laravel-8-login

이 게시물에서는 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를 방문하십시오.

행복한 코딩 :)

좋은 웹페이지 즐겨찾기