没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\filters\auth\HttpBasicAuth

继承yii\filters\auth\HttpBasicAuth » yii\filters\auth\AuthMethod » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable, yii\filters\auth\AuthInterface
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/filters/auth/HttpBasicAuth.php

HttpBasicAuth 是支持 HTTP 基本身份验证方法的操作筛选器。

您可以通过将 HttpBasicAuth 作为行为附加到控制器或模块,像下面这样:

public function behaviors()
{
    return [
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
        ],
    ];
}

HttpBasicAuth 默认实现使用 loginByAccessToken() 方法。 user 应用程序组件的方法只传递用户名。 此实现用于对 API 客户端进行身份验证。

如果要使用用户名和密码对用户进行身份验证,您应该提供 $auth 功能例如:

public function behaviors()
{
    return [
        'basicAuth' => [
            'class' => \yii\filters\auth\HttpBasicAuth::className(),
            'auth' => function ($username, $password) {
                $user = User::find()->where(['username' => $username])->one();
                if ($user->verifyPassword($password)) {
                    return $user;
                }
                return null;
            },
        ],
    ];
}

Tip: 如果身份验证不能按预期工作,确保您的 Web 服务器通过 $_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW'] 的值。 如果你使用 Apache 配合 PHP-CGI,您可能需要将此行添加到 .htaccess 文件中:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

公共属性

隐藏继承的属性

属性类型描述被定义在
$auth callable 可调用 PHP 将使用 HTTP 基本身份验证信息对用户进行身份验证。 可调用文件接收用户名和密码作为其参数。它应该返回一个标识对象。 与用户名和密码匹配的,如果没有此类标识则应返回空值。 仅当当前用户未通过身份验证时才调用可调用。 以下代码是此可调用的典型实现: `php function ($username, $password) { return \app\models\User::findOne([ 'username' => $username, 'password' => $password, ]); } ` 如果未设置此属性,则用户名信息将被视为访问令牌。 而密码信息将被忽略。在 yii\web\User::loginByAccessToken() 将调用方法对用户进行身份验证和登录。 yii\filters\auth\HttpBasicAuth
$except array List of action IDs that this filter should not apply to. yii\base\ActionFilter
$only array List of action IDs that this filter should apply to. yii\base\ActionFilter
$optional array 此筛选器将应用于的操作行为 IDs 的数组列表,但是身份验证失败不会导致错误。 它可能被用于行动,那是允许公开的,但是返回一些已验证用户的附加数据。 默认空,意思是不可选认证的任何行动。 Since version 2. yii\filters\auth\AuthMethod
$owner yii\base\Component|null The owner of this behavior yii\base\Behavior
$realm string HTTP 身份验证范围 yii\filters\auth\HttpBasicAuth
$request yii\web\Request 当前请求。如果没有设置,这个请求将使用应用程序组件。 yii\filters\auth\AuthMethod
$response yii\web\Response 要发送的响应。如果没有设置,这个响应将使用应用程序组件。 yii\filters\auth\AuthMethod
$user yii\web\User 表示用户身份验证状态的用户对象。如果没有设置,这个用户将使用应用程序组件。 yii\filters\auth\AuthMethod

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
afterAction() 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
attach() Attaches the behavior object to the component. yii\base\Behavior
authenticate() 对当前用户进行身份验证。 yii\filters\auth\HttpBasicAuth
beforeAction() This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action. yii\filters\auth\AuthMethod
beforeFilter() yii\base\ActionFilter
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
challenge() 在身份验证失败时产生质询。 例如,一些适当的 HTTP headers 可能会生成。 yii\filters\auth\HttpBasicAuth
className() Returns the fully qualified name of this class. yii\base\BaseObject
detach() Detaches the behavior object from the component. yii\base\Behavior
events() Declares event handlers for the $owner's events. yii\base\Behavior
handleFailure() 处理身份验证失败。 该实现通常应抛出未经授权的 UnauthorizedHttpException 异常以指示身份验证失败。 yii\filters\auth\AuthMethod
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\base\BaseObject

受保护的方法

隐藏继承的方法

方法描述被定义在
getActionId() 通过将 yii\base\Action::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 yii\base\ActionFilter
isActive() 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 yii\base\ActionFilter
isOptional() 检查,给定操作的身份验证是否可选。 yii\filters\auth\AuthMethod

属性详情

$auth 公共 属性

可调用 PHP 将使用 HTTP 基本身份验证信息对用户进行身份验证。 可调用文件接收用户名和密码作为其参数。它应该返回一个标识对象。 与用户名和密码匹配的,如果没有此类标识则应返回空值。 仅当当前用户未通过身份验证时才调用可调用。

以下代码是此可调用的典型实现:

function ($username, $password) {
    return \app\models\User::findOne([
        'username' => $username,
        'password' => $password,
    ]);
}

如果未设置此属性,则用户名信息将被视为访问令牌。 而密码信息将被忽略。在 yii\web\User::loginByAccessToken() 将调用方法对用户进行身份验证和登录。

public callable $auth null
$realm 公共 属性

HTTP 身份验证范围

public string $realm 'api'

方法详情

authenticate() 公共 方法

对当前用户进行身份验证。

public yii\web\IdentityInterface authenticate($user, $request, $response)
$user yii\web\User
$request yii\web\Request
$response yii\web\Response
return yii\web\IdentityInterface

已验证的用户标识。如果不提供身份验证信息,则返回空。

throws yii\web\UnauthorizedHttpException

如果提供的身份验证信息无效。

challenge() 公共 方法

在身份验证失败时产生质询。 例如,一些适当的 HTTP headers 可能会生成。

public void challenge($response)
$response yii\web\Response