Laravel의 기억 토큰은 필요할 때 생성됩니다 (예 : 사용자가 "remember me"버튼을 등록하고 클릭 할 때. 그 기본 발판이 AuthenticatesUsers::attemptLogin
방법에 따라 호출하는 것입니다 발생하면 :
기본 가드는 "시도"방법 (2 개 매개 변수를 허용
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(
$this->credentials($request), $request->has('remember')
);
}
그러나 실제 가드 인터페이스는 실제로 전혀 존재하는 시도 방법을 필요로하지 않습니다 이것은 모두 Laravel 스캐 폴딩의 기본값입니다.)
public function attempt(array $credentials = [], $remember = false)
{
$this->fireAttemptEvent($credentials, $remember);
$this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);
if ($this->hasValidCredentials($user, $credentials)) {
$this->login($user, $remember);
return true;
}
$this->fireFailedEvent($user, $credentials);
return false;
}
차례로 login
(가드 인터페이스 바로 laravel 비계의 다시없는 부분)에 호출
예제 SessionGuard
는 다음 시도 방법이있다. (가) A (아마도 암호화) 쿠키에 토큰 기억 저장하고 자동으로 로그인하는 데 사용할 아마도
protected function queueRecallerCookie(AuthenticatableContract $user)
{
$this->getCookieJar()->queue($this->createRecaller(
$user->getAuthIdentifier().'|'.$user->getRememberToken()
));
}
:에 의해
protected function cycleRememberToken(AuthenticatableContract $user)
{
$user->setRememberToken($token = Str::random(60));
$this->provider->updateRememberToken($user, $token);
}
다음 : 당신이 호출 순서 다음과 같은 유지하는 경우 그냥 아래로 비등 나중에 사용자.
Laravel이 오픈 소스이며 소스 코드를 살펴 보는 과정 전체가 구현에 대한 세부 정보가 필요할 때마다 스스로 할 수있는 작업임을 지적하기 만하면됩니다.
먼저 OO PHP에서 인터페이스, 특성, 상속 및 추상화에 대해 읽어 보시기 바랍니다. 당신은 개념에 익숙해 질 것입니다. – Tpojka
[ResetsPasswords] (https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/Auth/ResetsPasswords.php#L105) 특성은 60 자의 임의의 문자열을 생성하는 것으로 보입니다.아이디어는 사용자가 데이터베이스에 저장된 토큰과 일치하는 쿠키를 가지며 긴 임의의 문자열 때문에 다른 사용자가 그 쿠키를 추측 할 수 없다는 것입니다. – apokryfos
@apokryfos 네,하지만 functiuon이 데이터베이스에 remember_token을 저장하고 있습니까? –