Class yii\filters\auth\HttpBasicAuth
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 |
属性详情
可调用 PHP 将使用 HTTP 基本身份验证信息对用户进行身份验证。 可调用文件接收用户名和密码作为其参数。它应该返回一个标识对象。 与用户名和密码匹配的,如果没有此类标识则应返回空值。 仅当当前用户未通过身份验证时才调用可调用。
以下代码是此可调用的典型实现:
function ($username, $password) {
return \app\models\User::findOne([
'username' => $username,
'password' => $password,
]);
}
如果未设置此属性,则用户名信息将被视为访问令牌。 而密码信息将被忽略。在 yii\web\User::loginByAccessToken() 将调用方法对用户进行身份验证和登录。
HTTP 身份验证范围
方法详情
对当前用户进行身份验证。
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 | 如果提供的身份验证信息无效。 |
在身份验证失败时产生质询。 例如,一些适当的 HTTP headers 可能会生成。
public void challenge($response) | ||
$response | yii\web\Response |