LaravelのRememberトークンは、必要なときに作成されます。ユーザーが「私を覚えている」ボタンを登録してクリックすると、デフォルトのガードは「試み」方法(2つのパラメータを受け入れ
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(
$this->credentials($request), $request->has('remember')
);
}
しかし、実際のガードインタフェースは、実際には全く存在して試行方法を必要としない:そのとき、デフォルトの足場はAuthenticatesUsers::attemptLogin
方法に呼び出すことですこれはすべてデフォルトの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
は、次の試行方法があります。 (おそらく暗号化された)クッキーにトークンを覚えて保存し、自動的にログインするためにそれを使用するためにおそらく
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文字のランダムな文字列を生成するようです。ユーザーは、データベースに格納されているトークンと一致するCookieを持ち、長いランダムな文字列のため、他のユーザーはそれが何であるかを推測できません。 – apokryfos
@apokryfosええ、functiuonがデータベースにremember_tokenを保存していますか? –