0 follower

クラス yii\web\User

継承yii\web\User » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
利用可能バージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/web/User.php

Userは、ユーザー認証状態を管理するuserアプリケーションコンポーネントのクラスです。

$isGuestを使用して、現在のユーザーがゲストかどうかを判断できます。ユーザーがゲストの場合、$identityプロパティはnullを返します。それ以外の場合は、yii\web\IdentityInterfaceのインスタンスになります。

ユーザー認証状態を変更するために、さまざまなメソッドを呼び出すことができます。

  • login():指定されたIDを設定し、セッションとCookieに認証状態を記憶します。
  • logout():ユーザーをゲストとしてマークし、セッションとCookieから関連情報をクリアします。
  • setIdentity():セッションやCookieに影響を与えることなく、ユーザーIDを変更します(これは、ステートレスなRESTful APIの実装で最適です)。

Userはユーザー認証状態のみを維持することに注意してください。ユーザーの認証方法を処理しません。ユーザーを認証する方法のロジックは、yii\web\IdentityInterfaceを実装するクラスで行う必要があります。$identityClassにこのクラスの名前を設定する必要があります。

Userは、デフォルトでyii\web\Applicationでアプリケーションコンポーネントとして構成されています。Yii::$app->userからそのインスタンスにアクセスできます。

次の例に示すように、アプリケーション構成のcomponents下に配列を追加することで、構成を変更できます。

'user' => [
    'identityClass' => 'app\models\User', // User must implement the IdentityInterface
    'enableAutoLogin' => true,
    // 'loginUrl' => ['user/login'],
    // ...
]

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$absoluteAuthTimeout integer|null アクティビティに関係なく、ユーザーが自動的にログアウトされる秒数。 yii\web\User
$absoluteAuthTimeoutParam string 認証状態の絶対期限切れタイムスタンプの値を格納するために使用されるセッション変数名。 yii\web\User
$acceptableRedirectTypes array このコンポーネントが$loginUrlにリダイレクトする必要があるMIMEタイプ。 yii\web\User
$accessChecker yii\rbac\CheckAccessInterface|string|array|null アクセスチェックに使用されるアクセスチェッカーオブジェクト、またはアクセスチェッカーのアプリケーションコンポーネントID。 yii\web\User
$authKeyParam string 認証キーを格納するために使用されるセッション変数名。 yii\web\User
$authTimeout integer|null ユーザーが非アクティブな場合、ユーザーが自動的にログアウトされる秒数。 yii\web\User
$authTimeoutParam string 認証状態の期限切れタイムスタンプの値を格納するために使用されるセッション変数名。 yii\web\User
$autoRenewCookie boolean ページが要求されるたびに、ID Cookieを自動的に更新するかどうか。 yii\web\User
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされているビヘイビアのリスト。 yii\base\Component
$enableAutoLogin boolean Cookieベースのログインを有効にするかどうか。 yii\web\User
$enableSession boolean 複数のリクエストにわたって認証状態を維持するためにセッションを使用するかどうか。 yii\web\User
$id string|integer|null ユーザーの一意の識別子。 yii\web\User
$idParam string $idの値を格納するために使用されるセッション変数名。 yii\web\User
$identity yii\web\IdentityInterface|null 現在ログインしているユーザーに関連付けられているIDオブジェクト。 yii\web\User
$identityClass string $identityオブジェクトのクラス名。 yii\web\User
$identityCookie array ID Cookieの構成。 yii\web\User
$isGuest boolean 現在のユーザーがゲストかどうか。 yii\web\User
$loginUrl string|array|null loginRequired()が呼び出された場合のログインURL。 yii\web\User
$returnUrl string ログイン後にユーザーをリダイレクトする必要があるURL。 yii\web\User
$returnUrlParam string $returnUrlの値を格納するために使用されるセッション変数名。 yii\web\User

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているかどうか(つまり、定義されていてnullではない)を確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントが動作する必要があるビヘイビアのリストを返します。 yii\base\Component
can() 指定された権限で指定された操作を実行できるかどうかを確認します。 yii\web\User
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティが設定可能かどうかを示す値を返します。 yii\base\Component
checkRedirectAcceptable() Acceptヘッダーに、ログインページへのリダイレクトを許可するコンテンツタイプが含まれているかどうかを確認します。 yii\web\User
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアが、このコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 名前付きのビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getId() ユーザーを一意に表す値を返します。 yii\web\User
getIdentity() 現在ログインしているユーザーに関連付けられたアイデンティティオブジェクトを返します。 yii\web\User
getIsGuest() ユーザーがゲスト(認証されていない)かどうかを示す値を返します。 yii\web\User
getReturnUrl() ログイン成功後にブラウザをリダイレクトする必要があるURLを返します。 yii\web\User
hasEventHandlers() 指定されたイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() アプリケーションコンポーネントを初期化します。 yii\web\User
login() ユーザーをログインさせます。 yii\web\User
loginByAccessToken() 指定されたアクセストークンでユーザーをログインさせます。 yii\web\User
loginRequired() ユーザーのブラウザをログインページにリダイレクトします。 yii\web\User
logout() 現在のユーザーをログアウトします。 yii\web\User
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
setIdentity() ユーザーアイデンティティオブジェクトを設定します。 yii\web\User
setReturnUrl() セッションにURLを記憶させ、後でgetReturnUrl()で取得できるようにします。 yii\web\User
switchIdentity() 現在のユーザーのアイデンティティを新しいものに切り替えます。 yii\web\User
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
afterLogin() ユーザーが正常にログインした後に呼び出されるメソッドです。 yii\web\User
afterLogout() logout()を介してユーザーがログアウトされた直後に呼び出されるメソッドです。 yii\web\User
beforeLogin() ユーザーをログインさせる前に呼び出されるメソッドです。 yii\web\User
beforeLogout() logout()を呼び出してユーザーをログアウトする際に呼び出されるメソッドです。 yii\web\User
getAccessChecker() アクセスチェックに使用されるアクセスチェッカーを返します。 yii\web\User
getAuthManager() ユーザーコンポーネントに関連付けられた認証マネージャーを返します。 yii\web\User
getIdentityAndDurationFromCookie() アイデンティティクッキーが有効な形式であり、有効な認証キーが含まれているかどうかを判断します。 yii\web\User
loginByCookie() クッキーでユーザーをログインさせます。 yii\web\User
regenerateCsrfToken() CSRFトークンを再生成します。 yii\web\User
removeIdentityCookie() アイデンティティクッキーを削除します。 yii\web\User
renewAuthStatus() セッションとクッキーの情報を使用して、認証ステータスを更新します。 yii\web\User
renewIdentityCookie() アイデンティティクッキーを更新します。 yii\web\User
sendIdentityCookie() アイデンティティクッキーを送信します。 yii\web\User

定数

継承された定数を非表示

定数 説明 定義元
EVENT_AFTER_LOGIN 'afterLogin' yii\web\User
EVENT_AFTER_LOGOUT 'afterLogout' yii\web\User
EVENT_BEFORE_LOGIN 'beforeLogin' yii\web\User
EVENT_BEFORE_LOGOUT 'beforeLogout' yii\web\User

プロパティの詳細

継承されたプロパティを非表示

$absoluteAuthTimeout public property

アクティビティに関係なく、ユーザーが自動的にログアウトされる秒数。 $enableAutoLogintrueの場合、これは機能しません。

$absoluteAuthTimeoutParam public property

$absoluteAuthTimeoutが設定されている場合に使用される、認証状態の絶対有効期限タイムスタンプの値を格納するために使用されるセッション変数名。

public string $absoluteAuthTimeoutParam '__absoluteExpire'
$acceptableRedirectTypes public property (version 2.0.8以降で使用可能)

このコンポーネントが$loginUrlにリダイレクトする必要があるMIMEタイプ。

public array $acceptableRedirectTypes = [
    
'text/html',
    
'application/xhtml+xml',
]
$accessChecker public property (version 2.0.9以降で使用可能)

アクセスチェックに使用されるアクセスチェッカーオブジェクト、またはアクセスチェッカーのアプリケーションコンポーネントID。設定されていない場合、アプリケーション認証マネージャーが使用されます。

$authKeyParam public property (version 2.0.41以降で使用可能)

認証キーを格納するために使用されるセッション変数名。

public string $authKeyParam '__authKey'
$authTimeout public property

ユーザーが非アクティブな場合にユーザーが自動的にログアウトされる秒数。このプロパティが設定されていない場合、ユーザーは現在のセッションの期限切れ後にログアウトされます(yii\web\Session::$timeoutを参照)。$enableAutoLogintrueの場合、これは機能しません。

public integer|null $authTimeout null
$authTimeoutParam public property

$authTimeoutが設定されている場合に使用される、認証状態の有効期限タイムスタンプの値を格納するために使用されるセッション変数名。

public string $authTimeoutParam '__expire'
$autoRenewCookie public property

ページが要求されるたびにアイデンティティクッキーを自動的に更新するかどうか。$enableAutoLogintrueの場合にのみ有効です。これがfalseの場合、アイデンティティクッキーはユーザーが最初にログインしてから指定された期間後に期限切れになります。これがtrueの場合、アイデンティティクッキーはユーザーが最後にサイトにアクセスしてから指定された期間後に期限切れになります。

$enableAutoLoginも参照してください。

public boolean $autoRenewCookie true
$enableAutoLogin public property

Cookieベースのログインを有効にするかどうか。デフォルトはfalseです。$enableSessionfalseの場合、このプロパティは無視されます。

public boolean $enableAutoLogin false
$enableSession public property

複数のリクエストにわたって認証状態を維持するためにセッションを使用するかどうか。アプリケーションがステートレスの場合(RESTful APIの場合が多い)、このプロパティをfalseに設定します。

public boolean $enableSession true
$id public property

ユーザーの一意の識別子。nullの場合は、ゲストユーザーです。

public string|integer|null $id null
$idParam public property

$idの値を格納するために使用されるセッション変数名。

public string $idParam '__id'
$identity public property

現在ログインしているユーザーに関連付けられたIDオブジェクト。ユーザーがログインしていない(認証されていない)場合はnullが返されます。

$identityClass public property

$identityオブジェクトのクラス名。

public string $identityClass null
$identityCookie public property

$enableAutoLogintrueの場合にのみ使用される、ID Cookieの設定です。

yii\web\Cookieも参照してください。

public array $identityCookie = [
    
'name' => '_identity',
    
'httpOnly' => true,
]
$isGuest public property

現在のユーザーがゲストかどうか。

public boolean $isGuest null
$loginUrl public property

loginRequired()が呼び出された場合のログインURL。配列が指定されている場合、yii\web\UrlManager::createUrl()が呼び出され、対応するURLが作成されます。配列の最初の要素はログインアクションへのルートでなければならず、残りの名前と値のペアはログインURLを作成するために使用されるGETパラメータです。例えば、

['site/login', 'ref' => 1]

このプロパティがnullの場合、loginRequired()が呼び出されると、403 HTTP例外が発生します。

public string|array|null $loginUrl = [
    
'site/login',
]
$returnUrl public property

ログイン後にユーザーをリダイレクトするURL。このプロパティの型はゲッターとセッターで異なります。getReturnUrl()setReturnUrl()の詳細を参照してください。

public string $returnUrl null
$returnUrlParam public property

$returnUrlの値を格納するために使用されるセッション変数名。

public string $returnUrlParam '__returnUrl'

メソッドの詳細

継承されたメソッドを非表示

__call() public method

定義場所: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定されたメソッドがあるかどうかを確認し、あれば実行します。

これはPHPのマジックメソッドであり、不明なメソッドが呼び出されたときに暗黙的に呼び出されるため、直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

不明なメソッドを呼び出した場合

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() publicメソッド

定義されている場所: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。

古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() publicメソッド

定義されている場所: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つの処理を行います。

  • 指定された設定$configを使用してオブジェクトを初期化します。
  • init() を呼び出します。

このメソッドを子クラスでオーバーライドする場合は、

  • コンストラクタの最後の引数を、ここで示すように$configのような設定配列にすることをお勧めします。
  • コンストラクタの最後に、親の実装を呼び出してください。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() publicメソッド

定義されている場所: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • ゲッターで定義されたプロパティ: ゲッターの結果を返します。
  • ビヘイビアのプロパティ: ビヘイビアのプロパティの値を返します。

これはPHPのマジックメソッドであり、$value = $component->property;を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

詳細は __set() も参照してください。

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

プロパティ値またはビヘイビアのプロパティの値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() publicメソッド

定義されている場所: yii\base\Component::__isset()

プロパティが設定されているかどうか(つまり、定義されていてnullではない)を確認します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターで定義されたプロパティ: プロパティが設定されているかどうかを返します。
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返します。
  • 存在しないプロパティにはfalseを返します。

これはPHPのマジックメソッドであり、isset($component->property)を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

詳細は https://www.php.net/manual/en/function.isset.php を参照してください。

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

戻り値 boolean

指定されたプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() publicメソッド

定義されている場所: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターで定義されたプロパティ: プロパティの値を設定します。
  • "on xyz"形式のイベント: "xyz"イベントにハンドラーをアタッチします。
  • "as xyz"形式のビヘイビア: "xyz"という名前のビヘイビアをアタッチします。
  • ビヘイビアのプロパティ: ビヘイビアのプロパティの値を設定します。

これはPHPのマジックメソッドであり、$component->property = $value;を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

詳細は __get() も参照してください。

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() publicメソッド

定義されている場所: yii\base\Component::__unset()

コンポーネントプロパティをnullに設定します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターで定義されたプロパティ: プロパティの値をnullに設定します。
  • ビヘイビアのプロパティ: プロパティの値をnullに設定します。

これはPHPのマジックメソッドであり、unset($component->property)を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

詳細は https://www.php.net/manual/en/function.unset.php を参照してください。

public void __unset ( $name )
$name string

プロパティ名

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
afterLogin() protectedメソッド

ユーザーが正常にログインした後に呼び出されるメソッドです。

デフォルトの実装では、EVENT_AFTER_LOGIN イベントをトリガーします。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を呼び出すようにしてください。

protected void afterLogin ( $identity, $cookieBased, $duration )
$identity yii\web\IdentityInterface

ユーザーのアイデンティティ情報

$cookieBased boolean

ログインがCookieベースかどうか

$duration integer

ユーザーがログイン状態を維持できる秒数。0の場合は、ユーザーがブラウザを閉じるか、セッションを手動で破棄するまでログイン状態が続きます。

                protected function afterLogin($identity, $cookieBased, $duration)
{
    $this->trigger(self::EVENT_AFTER_LOGIN, new UserEvent([
        'identity' => $identity,
        'cookieBased' => $cookieBased,
        'duration' => $duration,
    ]));
}

            
afterLogout() protectedメソッド

logout()を介してユーザーがログアウトされた直後に呼び出されるメソッドです。

デフォルトの実装では、EVENT_AFTER_LOGOUT イベントをトリガーします。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を呼び出すようにしてください。

protected void afterLogout ( $identity )
$identity yii\web\IdentityInterface

ユーザーのアイデンティティ情報

                protected function afterLogout($identity)
{
    $this->trigger(self::EVENT_AFTER_LOGOUT, new UserEvent([
        'identity' => $identity,
    ]));
}

            
attachBehavior() publicメソッド

定義されている場所: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された設定に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことによって、ビヘイビアオブジェクトがこのコンポーネントにアタッチされます。

詳細は detachBehavior() も参照してください。

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの設定。これは次のいずれかになります。

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • ビヘイビアオブジェクトを作成するためにYii::createObject()に渡されるオブジェクト設定配列。
戻り値 yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() publicメソッド

定義位置: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、その名前でインデックス付けされ、yii\base\Behaviorオブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための設定配列である必要があります。

参照: attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチするビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
beforeLogin() protectedメソッド

ユーザーをログインさせる前に呼び出されるメソッドです。

デフォルトの実装では、EVENT_BEFORE_LOGINイベントをトリガーします。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を呼び出すようにしてください。

protected boolean beforeLogin ( $identity, $cookieBased, $duration )
$identity yii\web\IdentityInterface

ユーザーのアイデンティティ情報

$cookieBased boolean

ログインがCookieベースかどうか

$duration integer

ユーザーがログイン状態を維持できる秒数。0の場合は、ユーザーがブラウザを閉じるか、セッションを手動で破棄するまでログイン状態が続きます。

戻り値 boolean

ユーザーがログインを継続するかどうか

                protected function beforeLogin($identity, $cookieBased, $duration)
{
    $event = new UserEvent([
        'identity' => $identity,
        'cookieBased' => $cookieBased,
        'duration' => $duration,
    ]);
    $this->trigger(self::EVENT_BEFORE_LOGIN, $event);
    return $event->isValid;
}

            
beforeLogout() protectedメソッド

logout()を呼び出してユーザーをログアウトする際に呼び出されるメソッドです。

デフォルトの実装では、EVENT_BEFORE_LOGOUTイベントをトリガーします。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を呼び出すようにしてください。

protected boolean beforeLogout ( $identity )
$identity yii\web\IdentityInterface

ユーザーのアイデンティティ情報

戻り値 boolean

ユーザーがログアウトを継続するかどうか

                protected function beforeLogout($identity)
{
    $event = new UserEvent([
        'identity' => $identity,
    ]);
    $this->trigger(self::EVENT_BEFORE_LOGOUT, $event);
    return $event->isValid;
}

            
behaviors() publicメソッド

定義位置: yii\base\Component::behaviors()

このコンポーネントが動作する必要があるビヘイビアのリストを返します。

子クラスでは、このメソッドをオーバーライドして、動作させたいビヘイビアを指定できます。

このメソッドの戻り値は、ビヘイビア名でインデックス付けされたビヘイビアオブジェクトまたは設定の配列である必要があります。ビヘイビアの設定は、ビヘイビアクラスを指定する文字列、または以下の構造の配列のいずれかです。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスはyii\base\Behaviorを拡張する必要があることに注意してください。ビヘイビアは名前付きまたは匿名でアタッチできます。配列キーとして名前を使用する場合、この名前を使用して、getBehavior()でビヘイビアを取得したり、detachBehavior()でビヘイビアをデタッチしたりできます。匿名のビヘイビアは取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、コンポーネントに自動的に(オンデマンドで)アタッチされます。

public array behaviors ( )
戻り値 array

ビヘイビアの設定。

                public function behaviors()
{
    return [];
}

            
can() publicメソッド

指定された権限で指定された操作を実行できるかどうかを確認します。

このメソッドを使用するには、「authManager」アプリケーションコンポーネントを設定する必要があることに注意してください。設定しないと、常にfalseが返されます。

public boolean can ( $permissionName, $params = [], $allowCaching true )
$permissionName string

アクセスチェックが必要な権限の名前(例:「投稿を編集」)。

$params array

ユーザーに割り当てられたロールと権限に関連付けられたルールに渡される名前と値のペア。

$allowCaching boolean

アクセスチェックの結果のキャッシュを許可するかどうか。このパラメータがtrue(デフォルト)の場合、操作のアクセスチェックが以前に実行されている場合、このメソッドを呼び出して同じ操作をチェックすると、その結果が直接返されます。このパラメータがfalseの場合、このメソッドは常にyii\rbac\CheckAccessInterface::checkAccess()を呼び出して、最新のアクセス結果を取得します。このキャッシュは、同じリクエスト内でのみ有効であり、$params = []の場合にのみ機能することに注意してください。

戻り値 boolean

ユーザーが指定された権限で指定された操作を実行できるかどうか。

                public function can($permissionName, $params = [], $allowCaching = true)
{
    if ($allowCaching && empty($params) && isset($this->_access[$permissionName])) {
        return $this->_access[$permissionName];
    }
    if (($accessChecker = $this->getAccessChecker()) === null) {
        return false;
    }
    $access = $accessChecker->checkAccess($this->getId(), $permissionName, $params);
    if ($allowCaching && empty($params)) {
        $this->_access[$permissionName] = $access;
    }
    return $access;
}

            
canGetProperty() publicメソッド

定義位置: yii\base\Component::canGetProperty()

プロパティが読み取り可能かどうかを示す値を返します。

プロパティは、以下の場合に読み取ることができます。

  • クラスに指定された名前に関連付けられたゲッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

参照: canSetProperty().

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを読み取ることができるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() publicメソッド

定義位置: yii\base\Component::canSetProperty()

プロパティが設定可能かどうかを示す値を返します。

プロパティは、以下の場合に書き込むことができます。

  • クラスに指定された名前に関連付けられたセッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

参照: canGetProperty().

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを書き込むことができるかどうか

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
checkRedirectAcceptable() publicメソッド (バージョン2.0.8以降で使用可能)

Acceptヘッダーに、ログインページへのリダイレクトを許可するコンテンツタイプが含まれているかどうかを確認します。

ログインページは、デフォルトでtext/htmlまたはapplication/xhtml+xmlを提供すると想定されています。$acceptableRedirectTypesプロパティを変更することで、許容されるコンテンツタイプを変更できます。

参照: $acceptableRedirectTypes.

public boolean checkRedirectAcceptable ( )
戻り値 boolean

このリクエストをログインページにリダイレクトできるかどうか。

                public function checkRedirectAcceptable()
{
    $acceptableTypes = Yii::$app->getRequest()->getAcceptableContentTypes();
    if (empty($acceptableTypes) || (count($acceptableTypes) === 1 && array_keys($acceptableTypes)[0] === '*/*')) {
        return true;
    }
    foreach ($acceptableTypes as $type => $params) {
        if (in_array($type, $this->acceptableRedirectTypes, true)) {
            return true;
        }
    }
    return false;
}

            
className() public staticメソッド
2.0.14から非推奨。PHP >= 5.5では、代わりに::classを使用してください。

定義位置: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
戻り値 string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
detachBehavior() public method

定義されている場所: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

戻り値 yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合はnull。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public method

定義されている場所: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public method

定義されている場所: yii\base\Component::ensureBehaviors()

behaviors()で宣言されたビヘイビアが、このコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
getAccessChecker() protected method (available since version 2.0.9)

アクセスチェックに使用されるアクセスチェッカーを返します。

protected yii\rbac\CheckAccessInterface getAccessChecker ( )

                protected function getAccessChecker()
{
    return $this->accessChecker !== null ? $this->accessChecker : $this->getAuthManager();
}

            
getAuthManager() protected method (available since version 2.0.6)
バージョン2.0.9から非推奨となり、2.1で削除される予定です。getAccessChecker() を代わりに使用してください。

ユーザーコンポーネントに関連付けられた認証マネージャーを返します。

デフォルトでは、これは`authManager`アプリケーションコンポーネントです。必要に応じて、このメソッドをオーバーライドして異なる認証マネージャーインスタンスを返すことができます。

protected yii\rbac\ManagerInterface getAuthManager ( )

                protected function getAuthManager()
{
    return Yii::$app->getAuthManager();
}

            
getBehavior() public method

定義されている場所: yii\base\Component::getBehavior()

名前付きのビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビアの名前

戻り値 yii\base\Behavior|null

ビヘイビアオブジェクト、またはビヘイビアが存在しない場合はnull

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public method

定義されている場所: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
戻り値 yii\base\Behavior[]

このコンポーネントにアタッチされているビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getId() public method

ユーザーを一意に表す値を返します。

getIdentity() も参照してください。

public string|integer|null getId ( )
戻り値 string|integer|null

ユーザーの一意の識別子。nullの場合は、ゲストユーザーです。

                public function getId()
{
    $identity = $this->getIdentity();
    return $identity !== null ? $identity->getId() : null;
}

            
getIdentity() public method

現在ログインしているユーザーに関連付けられたアイデンティティオブジェクトを返します。

$enableSession がtrueの場合、このメソッドはセッションに保存されているユーザーの認証データを読み取り、対応するアイデンティティオブジェクトを再構築しようと試みます(まだ行っていない場合)。

こちらも参照してください

public yii\web\IdentityInterface|null getIdentity ( $autoRenew true )
$autoRenew boolean

$enableSession がtrueの場合にのみ有効です。まだ行っていない場合に認証状態を自動的に更新するかどうか。

戻り値 yii\web\IdentityInterface|null

現在ログインしているユーザーに関連付けられたIDオブジェクト。ユーザーがログインしていない(認証されていない)場合はnullが返されます。

                public function getIdentity($autoRenew = true)
{
    if ($this->_identity === false) {
        if ($this->enableSession && $autoRenew) {
            try {
                $this->_identity = null;
                $this->renewAuthStatus();
            } catch (\Exception $e) {
                $this->_identity = false;
                throw $e;
            } catch (\Throwable $e) {
                $this->_identity = false;
                throw $e;
            }
        } else {
            return null;
        }
    }
    return $this->_identity;
}

            
getIdentityAndDurationFromCookie() protected method (available since version 2.0.9)

アイデンティティクッキーが有効な形式であり、有効な認証キーが含まれているかどうかを判断します。

このメソッドは、$enableAutoLogin がtrueの場合に使用されます。このメソッドは、アイデンティティクッキーの情報を使用してユーザーの認証を試みます。

loginByCookie() も参照してください。

protected array|null getIdentityAndDurationFromCookie ( )
戻り値 array|null

有効な場合は'identity'と'duration'の配列を返し、無効な場合はnullを返します。

                protected function getIdentityAndDurationFromCookie()
{
    $value = Yii::$app->getRequest()->getCookies()->getValue($this->identityCookie['name']);
    if ($value === null) {
        return null;
    }
    $data = json_decode($value, true);
    if (is_array($data) && count($data) == 3) {
        list($id, $authKey, $duration) = $data;
        /* @var $class IdentityInterface */
        $class = $this->identityClass;
        $identity = $class::findIdentity($id);
        if ($identity !== null) {
            if (!$identity instanceof IdentityInterface) {
                throw new InvalidValueException("$class::findIdentity() must return an object implementing IdentityInterface.");
            } elseif (!$identity->validateAuthKey($authKey)) {
                $ip = Yii::$app->getRequest()->getUserIP();
                Yii::warning("Invalid cookie auth key attempted for user '$id' from $ip: $authKey", __METHOD__);
            } else {
                return ['identity' => $identity, 'duration' => $duration];
            }
        }
    }
    $this->removeIdentityCookie();
    return null;
}

            
getIsGuest() public method

ユーザーがゲスト(認証されていない)かどうかを示す値を返します。

getIdentity() も参照してください。

public boolean getIsGuest ( )
戻り値 boolean

現在のユーザーがゲストかどうか。

                public function getIsGuest()
{
    return $this->getIdentity() === null;
}

            
getReturnUrl() public method

ログイン成功後にブラウザをリダイレクトする必要があるURLを返します。

このメソッドは、セッションからリターンURLを読み取ります。これは通常、ログインアクションによって使用され、このメソッドを呼び出して、認証が成功した後にブラウザをリダイレクトする場所を指定します。

loginRequired() も参照してください。

public string getReturnUrl ( $defaultUrl null )
$defaultUrl string|array|null

事前に設定されていない場合のデフォルトの戻りURL。これがnullで、戻りURLが事前に設定されていない場合は、yii\web\Application::$homeUrl にリダイレクトされます。URLの許容形式については、setReturnUrl() を参照してください。

戻り値 string

ログイン後にユーザーをリダイレクトする必要があるURL。

                public function getReturnUrl($defaultUrl = null)
{
    $url = Yii::$app->getSession()->get($this->returnUrlParam, $defaultUrl);
    if (is_array($url)) {
        if (isset($url[0])) {
            return Yii::$app->getUrlManager()->createUrl($url);
        }
        $url = null;
    }
    return $url === null ? Yii::$app->getHomeUrl() : $url;
}

            
hasEventHandlers() public method

定義場所: yii\base\Component::hasEventHandlers()

指定されたイベントにハンドラーがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 boolean

イベントにハンドラーがアタッチされているかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public method

定義場所: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドが定義されているのは、以下の場合です。

  • クラスが指定された名前のメソッドを持つ場合
  • アタッチされたビヘイビアが指定された名前のメソッドを持つ場合(`$checkBehaviors` がtrueの場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

戻り値 boolean

メソッドが定義されているかどうか

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public method

定義場所: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティが定義されているのは、以下の場合です。

  • クラスが指定された名前と関連付けられたゲッターまたはセッターメソッドを持つ場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアが指定された名前のプロパティを持つ場合(`$checkBehaviors` がtrueの場合)。

こちらも参照してください

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() public method

アプリケーションコンポーネントを初期化します。

public void init ( )

                public function init()
{
    parent::init();
    if ($this->identityClass === null) {
        throw new InvalidConfigException('User::identityClass must be set.');
    }
    if ($this->enableAutoLogin && !isset($this->identityCookie['name'])) {
        throw new InvalidConfigException('User::identityCookie must contain the "name" element.');
    }
    if ($this->accessChecker !== null) {
        $this->accessChecker = Instance::ensure($this->accessChecker, '\yii\rbac\CheckAccessInterface');
    }
}

            
login() public method

ユーザーをログインさせます。

ユーザーのログイン後

  • ユーザーのアイデンティティ情報は、$identity プロパティから取得できます。

$enableSessiontrueの場合

  • アイデンティティ情報はセッションに保存され、次のリクエストで使用できます。
  • $duration == 0の場合:セッションがアクティブな間、またはユーザーがブラウザを閉じるまで。
  • $duration > 0の場合:セッションがアクティブな間、または$enableAutoLogintrueに設定されている場合、クッキーが有効な間(秒単位で`$duration`)。

$enableSessionfalseの場合

  • $durationパラメータは無視されます。
public boolean login ( yii\web\IdentityInterface $identity, $duration 0 )
$identity yii\web\IdentityInterface

ユーザーアイデンティティ(既に認証されている必要があります)

$duration integer

ユーザーがログイン状態を維持できる秒数。デフォルトは0

戻り値 boolean

ユーザーがログインしているかどうか

                public function login(IdentityInterface $identity, $duration = 0)
{
    if ($this->beforeLogin($identity, false, $duration)) {
        $this->switchIdentity($identity, $duration);
        $id = $identity->getId();
        $ip = Yii::$app->getRequest()->getUserIP();
        if ($this->enableSession) {
            $log = "User '$id' logged in from $ip with duration $duration.";
        } else {
            $log = "User '$id' logged in from $ip. Session not enabled.";
        }
        $this->regenerateCsrfToken();
        Yii::info($log, __METHOD__);
        $this->afterLogin($identity, false, $duration);
    }
    return !$this->getIsGuest();
}

            
loginByAccessToken() public method

指定されたアクセストークンでユーザーをログインさせます。

このメソッドは、まず提供されたアクセストークンを使用してyii\web\IdentityInterface::findIdentityByAccessToken()を呼び出してユーザーを認証します。成功すると、認証されたユーザーをログインさせるためにlogin()を呼び出します。認証に失敗した場合、またはlogin()が失敗した場合は、nullを返します。

public yii\web\IdentityInterface|null loginByAccessToken ( $token, $type null )
$token string

アクセストークン

$type mixed

トークンの種類。このパラメータの値は実装によって異なります。yii\filters\auth\HttpBearerAuth は、このパラメータをyii\filters\auth\HttpBearerAuthに設定します。

戻り値 yii\web\IdentityInterface|null

指定されたアクセストークンに関連付けられたアイデンティティ。アクセストークンが無効な場合、またはlogin()が失敗した場合は、nullを返します。

                public function loginByAccessToken($token, $type = null)
{
    /* @var $class IdentityInterface */
    $class = $this->identityClass;
    $identity = $class::findIdentityByAccessToken($token, $type);
    if ($identity && $this->login($identity)) {
        return $identity;
    }
    return null;
}

            
loginByCookie() protected method

クッキーでユーザーをログインさせます。

このメソッドは、identity cookieによって提供されたIDとauthKey情報を使用して、ユーザーのログインを試みます。

protected void loginByCookie ( )

                protected function loginByCookie()
{
    $data = $this->getIdentityAndDurationFromCookie();
    if (isset($data['identity'], $data['duration'])) {
        $identity = $data['identity'];
        $duration = $data['duration'];
        if ($this->beforeLogin($identity, true, $duration)) {
            $this->switchIdentity($identity, $this->autoRenewCookie ? $duration : 0);
            $id = $identity->getId();
            $ip = Yii::$app->getRequest()->getUserIP();
            Yii::info("User '$id' logged in from $ip via cookie.", __METHOD__);
            $this->afterLogin($identity, true, $duration);
        }
    }
}

            
loginRequired() public method

ユーザーのブラウザをログインページにリダイレクトします。

リダイレクトの前に、現在のURL(AJAX URLでない場合)は$returnUrlとして保持されるため、ユーザーのブラウザはログイン成功後に現在のページにリダイレクトされます。

ユーザーのブラウザがこのメソッドの呼び出し後に指定されたログインURLにリダイレクトされるように、$loginUrlを設定してください。

$loginUrl が設定されている場合、このメソッドを呼び出してもアプリケーションの実行は終了しません。

public yii\web\Response loginRequired ( $checkAjax true, $checkAcceptHeader true )
$checkAjax boolean

リクエストがAJAXリクエストかどうかをチェックするかどうか。これがtrueで、リクエストがAJAXリクエストの場合、現在のURL(AJAXリクエストの場合)は戻りURLとして設定されません。

$checkAcceptHeader boolean

リクエストがHTMLレスポンスを受け入れるかどうかをチェックするかどうか。デフォルトはtrueです。これがtrueで、リクエストがHTMLレスポンスを受け入れない場合、現在のURLは戻りURLとして設定されません。また、ユーザーをリダイレクトする代わりに、ForbiddenHttpExceptionがスローされます。このパラメータはバージョン2.0.8から使用できます。

戻り値 yii\web\Response

$loginUrl が設定されている場合のリダイレクトレスポンス

例外 yii\web\ForbiddenHttpException

$loginUrl が設定されていない場合、またはリダイレクトが適用できない場合の「アクセス拒否」HTTP例外。

                public function loginRequired($checkAjax = true, $checkAcceptHeader = true)
{
    $request = Yii::$app->getRequest();
    $canRedirect = !$checkAcceptHeader || $this->checkRedirectAcceptable();
    if (
        $this->enableSession
        && $request->getIsGet()
        && (!$checkAjax || !$request->getIsAjax())
        && $canRedirect
    ) {
        $this->setReturnUrl($request->getAbsoluteUrl());
    }
    if ($this->loginUrl !== null && $canRedirect) {
        $loginUrl = (array) $this->loginUrl;
        if ($loginUrl[0] !== Yii::$app->requestedRoute) {
            return Yii::$app->getResponse()->redirect($this->loginUrl);
        }
    }
    throw new ForbiddenHttpException(Yii::t('yii', 'Login Required'));
}

            
logout() publicメソッド

現在のユーザーをログアウトします。

これは、認証関連のセッションデータを削除します。$destroySession が true の場合、すべてのセッションデータが削除されます。

public boolean logout ( $destroySession true )
$destroySession boolean

セッション全体を破棄するかどうか。デフォルトは true です。$enableSession が false の場合、このパラメータは無視されます。

戻り値 boolean

ユーザーがログアウトしたかどうか

                public function logout($destroySession = true)
{
    $identity = $this->getIdentity();
    if ($identity !== null && $this->beforeLogout($identity)) {
        $this->switchIdentity(null);
        $id = $identity->getId();
        $ip = Yii::$app->getRequest()->getUserIP();
        Yii::info("User '$id' logged out from $ip.", __METHOD__);
        if ($destroySession && $this->enableSession) {
            Yii::$app->getSession()->destroy();
        }
        $this->afterLogout($identity);
    }
    return $this->getIsGuest();
}

            
off() publicメソッド

定義されている場所: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドは、on() の反対です。

注: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラのみが削除され、このワイルドカードと一致するプレーン名で登録されたハンドラは残ります。

こちらも参照してください on().

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラ。null の場合、指定されたイベントにアタッチされているすべてのハンドラが削除されます。

戻り値 boolean

ハンドラが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() publicメソッド

定義されている場所: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラは、有効なPHPコールバックである必要があります。いくつかの例を以下に示します。

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラは、次のシグネチャで定義する必要があります。

function ($event)

ここで、$event は、イベントに関連付けられたパラメータを含む yii\base\Event オブジェクトです。

2.0.14以降、イベント名をワイルドカードパターンとして指定できます。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

こちらも参照してください off().

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler callable

イベントハンドラ

$data mixed

イベントがトリガーされたときにイベントハンドラに渡されるデータ。イベントハンドラが呼び出されると、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

既存のハンドラリストの最後に新しいイベントハンドラを追加するかどうか。false の場合、新しいハンドラは既存のハンドラリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
regenerateCsrfToken() protectedメソッド (バージョン2.0.14.2から利用可能)

CSRFトークンを再生成します。

protected void regenerateCsrfToken ( )

                protected function regenerateCsrfToken()
{
    $request = Yii::$app->getRequest();
    if ($request->enableCsrfCookie || $this->enableSession) {
        $request->getCsrfToken(true);
    }
}

            
removeIdentityCookie() protectedメソッド (バージョン2.0.9から利用可能)

アイデンティティクッキーを削除します。

このメソッドは、$enableAutoLogin が true の場合に使用されます。

protected void removeIdentityCookie ( )

                protected function removeIdentityCookie()
{
    Yii::$app->getResponse()->getCookies()->remove(Yii::createObject(array_merge($this->identityCookie, [
        'class' => 'yii\web\Cookie',
    ])));
}

            
renewAuthStatus() protectedメソッド

セッションとクッキーの情報を使用して、認証ステータスを更新します。

このメソッドは、$idParam セッション変数を使用してユーザーIDを特定しようとします。

$authTimeout が設定されている場合、このメソッドはタイマーをリフレッシュします。

セッションによってユーザーIDを特定できない場合、このメソッドは $enableAutoLogin が true の場合、cookieによるログイン を試みます。

protected void renewAuthStatus ( )

                protected function renewAuthStatus()
{
    $session = Yii::$app->getSession();
    $id = $session->getHasSessionId() || $session->getIsActive() ? $session->get($this->idParam) : null;
    if ($id === null) {
        $identity = null;
    } else {
        /* @var $class IdentityInterface */
        $class = $this->identityClass;
        $identity = $class::findIdentity($id);
        if ($identity === null) {
            $this->switchIdentity(null);
        }
    }
    if ($identity !== null) {
        $authKey = $session->get($this->authKeyParam);
        if ($authKey !== null && !$identity->validateAuthKey($authKey)) {
            $identity = null;
            $ip = Yii::$app->getRequest()->getUserIP();
            Yii::warning("Invalid session auth key attempted for user '$id' from $ip: $authKey", __METHOD__);
        }
    }
    $this->setIdentity($identity);
    if ($identity !== null && ($this->authTimeout !== null || $this->absoluteAuthTimeout !== null)) {
        $expire = $this->authTimeout !== null ? $session->get($this->authTimeoutParam) : null;
        $expireAbsolute = $this->absoluteAuthTimeout !== null ? $session->get($this->absoluteAuthTimeoutParam) : null;
        if ($expire !== null && $expire < time() || $expireAbsolute !== null && $expireAbsolute < time()) {
            $this->logout(false);
        } elseif ($this->authTimeout !== null) {
            $session->set($this->authTimeoutParam, time() + $this->authTimeout);
        }
    }
    if ($this->enableAutoLogin) {
        if ($this->getIsGuest()) {
            $this->loginByCookie();
        } elseif ($this->autoRenewCookie) {
            $this->renewIdentityCookie();
        }
    }
}

            
renewIdentityCookie() protectedメソッド

アイデンティティクッキーを更新します。

このメソッドは、アイデンティティクッキーの有効期限を、現在の時刻と最初に指定されたクッキーの期間の合計に設定します。

protected void renewIdentityCookie ( )

                protected function renewIdentityCookie()
{
    $name = $this->identityCookie['name'];
    $value = Yii::$app->getRequest()->getCookies()->getValue($name);
    if ($value !== null) {
        $data = json_decode($value, true);
        if (is_array($data) && isset($data[2])) {
            $cookie = Yii::createObject(array_merge($this->identityCookie, [
                'class' => 'yii\web\Cookie',
                'value' => $value,
                'expire' => time() + (int) $data[2],
            ]));
            Yii::$app->getResponse()->getCookies()->add($cookie);
        }
    }
}

            
sendIdentityCookie() protectedメソッド

アイデンティティクッキーを送信します。

このメソッドは、$enableAutoLogin が true の場合に使用されます。$id認証キー、およびCookieベースのログイン情報の期間をCookieに保存します。

loginByCookie() も参照してください。

protected void sendIdentityCookie ( $identity, $duration )
$identity yii\web\IdentityInterface
$duration integer

ユーザーがログイン状態を維持できる秒数。

                protected function sendIdentityCookie($identity, $duration)
{
    $cookie = Yii::createObject(array_merge($this->identityCookie, [
        'class' => 'yii\web\Cookie',
        'value' => json_encode([
            $identity->getId(),
            $identity->getAuthKey(),
            $duration,
        ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE),
        'expire' => time() + $duration,
    ]));
    Yii::$app->getResponse()->getCookies()->add($cookie);
}

            
setIdentity() publicメソッド

ユーザーアイデンティティオブジェクトを設定します。

このメソッドは、セッションまたはCookieを処理しません。通常は、switchIdentity() を使用して、現在のユーザーのIDを変更する必要があります。

public void setIdentity ( $identity )
$identity yii\web\IdentityInterface|null

現在ログインしているユーザーに関連付けられているIDオブジェクト。null の場合、現在のユーザーは、関連付けられたIDのないゲストになります。

例外 yii\base\InvalidValueException

$identity オブジェクトが yii\web\IdentityInterface を実装していない場合。

                public function setIdentity($identity)
{
    if ($identity instanceof IdentityInterface) {
        $this->_identity = $identity;
    } elseif ($identity === null) {
        $this->_identity = null;
    } else {
        throw new InvalidValueException('The identity object must implement IdentityInterface.');
    }
    $this->_access = [];
}

            
setReturnUrl() publicメソッド

セッションにURLを記憶させ、後でgetReturnUrl()で取得できるようにします。

public void setReturnUrl ( $url )
$url string|array

ログイン後にユーザーをリダイレクトするURL。配列が指定されている場合、yii\web\UrlManager::createUrl() が呼び出され、対応するURLが作成されます。配列の最初の要素はルートでなければならず、残りの名前と値のペアは、URLを作成するために使用されるGETパラメータです。たとえば、

['admin/index', 'ref' => 1]

                public function setReturnUrl($url)
{
    Yii::$app->getSession()->set($this->returnUrlParam, $url);
}

            
switchIdentity() publicメソッド

現在のユーザーのアイデンティティを新しいものに切り替えます。

$enableSession がtrueの場合、このメソッドは$durationの値に従って、セッションおよび/またはCookieを使用してユーザー識別情報を保存する場合があります。login() を参照して詳細を確認してください。

このメソッドは主に、現在のユーザーに対応する識別情報を関連付ける必要がある場合に、login()logout()、およびloginByCookie()によって呼び出されます。

public void switchIdentity ( $identity, $duration 0 )
$identity yii\web\IdentityInterface|null

現在のユーザーに関連付ける識別情報です。nullの場合、現在のユーザーをゲストに切り替えることを意味します。

$duration integer

ユーザーがログイン状態を維持できる秒数です。このパラメーターは、$identityがnullでない場合にのみ使用されます。

                public function switchIdentity($identity, $duration = 0)
{
    $this->setIdentity($identity);
    if (!$this->enableSession) {
        return;
    }
    /* Ensure any existing identity cookies are removed. */
    if ($this->enableAutoLogin && ($this->autoRenewCookie || $identity === null)) {
        $this->removeIdentityCookie();
    }
    $session = Yii::$app->getSession();
    $session->regenerateID(true);
    $session->remove($this->idParam);
    $session->remove($this->authTimeoutParam);
    $session->remove($this->authKeyParam);
    if ($identity) {
        $session->set($this->idParam, $identity->getId());
        $session->set($this->authKeyParam, $identity->getAuthKey());
        if ($this->authTimeout !== null) {
            $session->set($this->authTimeoutParam, time() + $this->authTimeout);
        }
        if ($this->absoluteAuthTimeout !== null) {
            $session->set($this->absoluteAuthTimeoutParam, time() + $this->absoluteAuthTimeout);
        }
        if ($this->enableAutoLogin && $duration > 0) {
            $this->sendIdentityCookie($identity, $duration);
        }
    }
}

            
trigger() publicメソッド

定義先: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラを含む、イベントにアタッチされたすべてのハンドラを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンスです。設定されていない場合、デフォルトのyii\base\Eventオブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}