【PHP/Laravel】$this->gurad->user()を使うまで

php-laravel

$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の準備

Laravel, php, programming

Posted by 異世界攻略班