Laravelの認証には「Guard」と「Provider」という概念がある。
今回は「Guard」について一度整理してみる。
Guard
公式による定義は以下。
Guards define how users are authenticated for each request. For example, Laravel ships with a session guard which maintains state using session storage and cookies.
デフォルトでは以下のGuardが用意されている。
またinterfaceは以下。
Guard
上記公式による定義の通り、Guardはリクエストごとにユーザーを認証する方法を定義しているが、どうやって定義しているかをinterfaceを使って見てみる。
check()
/**
* Determine if the current user is authenticated.
*
* @return bool
*/
public function check();
現在のユーザーが認証されているかを確認し、認証されていればtrueを返す。
guest()
/**
* Determine if the current user is a guest.
*
* @return bool
*/
public function guest();
現在のユーザーがguest、つまり未認証かどうかを確認し、未認証であればtrueを返す。
check()
の反転。
user()
/**
* Get the currently authenticated user.
*
* @return \Illuminate\Contracts\Auth\Authenticatable|null
*/
public function user();
認証済みのユーザーを返す。
id()
/**
* Get the ID for the currently authenticated user.
*
* @return int|string|null
*/
public function id();
認証済みのユーザーのIDを返す。
validate()
/**
* Validate a user's credentials.
*
* @param array $credentials
* @return bool
*/
public function validate(array $credentials = []);
ユーザーの識別情報を検証する。OKであればtrueを返す。
setUser()
/**
* Set the current user.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @return void
*/
public function setUser(Authenticatable $user);
認証済ユーザーをセットする。
interfaceを見て
interfaceを見たら大体使い方が分かってくる。
- ログイン時の検証を
validate()
で行い、OKであればそのユーザーをsetUser()
でセットしてする。 - 認証済みかどうかをチェックしたい場合は
check()
、guest()
を使う。 - 認証済みのユーザー情報を取得したい場合は
user()
やid()
を使う。