【PHP/Laravel】$this->gurad->user()を使うまで
Contents
$this->gurad->user()
- Actionsで$this->guard->user();を使用し、id、passwordを取得。認証で利用する。
$hoge = $this->guard->user();
$id = $hoge->id;
- user()では「Get the Currently authenticated user.」認証済みのユーザーを取得する。
- まず、「The guard implimentation.」ガードの実装。
@var \Illuminate\Contracts\Auth\StatefulGuard
protected $guard;
- コントローラーインスタンスの生成
@param \Illuminate\Contracts\Auth\StatefulGuard $guard
public function __construct(StatefulGuard $guard)
{
$this->guard = $guard;
}
- \Illuminate\Contracts\Auth\StatefulGuardの確認
- インターフェース
- Guardクラスを継承
- 「Get the Currently authenticated user.」認証済みのユーザーを取得する。
@return \Illuminate\Contracts\Auth\Authenticatable/null
public function user();
- \Illuminate\Contracts\Auth\Authenticatableを確認。Authenticatable契約
- 「【Laravel】 認証や認可に関する補足資料」のAuthenticatableを参照。
namespace Illuminate\Contracts\Auth;
interface Authenticatable
{
public function getAuthIdentifierName();//識別子の名前を返す(idなど)
public function getAuthIdentifier();//識別子の値を返す
public function getAuthPassword();//パスワードハッシュの値を返す
public function getRememberToken();//自動ログイントークンの値を返す
public function setRememberToken($value);//自動ログイントークンをセットする
public function getRememberTokenName();//自動ログイントークンの名前を返す
}
- デフォルトではusersテーブル。
- use Illuminate\Foundation\Auth\User as Authenticatable;
- class User extends Authenticatable
- よって、usersの認証済みid、password等を返す
- users以外の場合、use Illuminate\Database\Eloquent\Model;
- extends Model モデルを継承。protected $primaryKey = 'id’;などデフォルトの設定が書かれてある。usersから変更する場合にはモデルに上書く形で設定を追記する。class User extends Authenticatable
参照
・自動注入
・Laravel サービスコンテナの理解を深める
・Authenticatable契約
・laravel/framework
・Laravel 9.x Eloquentの準備