yiisoft / auth
Yii 身份验证
3.1.1
2024-05-06 12:26 UTC
Requires
- php: ^8.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0|^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- yiisoft/http: ^1.2
- yiisoft/strings: ^2.0
Requires (Dev)
- jetbrains/phpstorm-attributes: ^1.0
- maglnet/composer-require-checker: ^4.2
- nyholm/psr7: ^1.3
- phpunit/phpunit: ^9.5
- rector/rector: ^1.0
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.8
- yiisoft/yii-debug: dev-master|dev-php80
This package is auto-updated.
Last update: 2024-08-31 11:48:33 UTC
README
Yii Auth
该包提供了各种身份验证方法、一组抽象来实现您的应用程序,以及一个用于身份验证身份的 PSR-15 中间件。
要求
- PHP 8.0 或更高版本。
安装
composer require yiisoft/auth
通用用法
配置中间件并将其添加到中间件堆栈
$identityRepository = getIdentityWithTokenRepository(); // \Yiisoft\Auth\IdentityRepositoryInterface $authenticationMethod = new \Yiisoft\Auth\Method\HttpBasic($identityRepository); $middleware = new \Yiisoft\Auth\Middleware\Authentication( $authenticationMethod, $responseFactory, // PSR-17 ResponseFactoryInterface $failureHandler // optional, \Yiisoft\Auth\Handler\AuthenticationFailureHandler by default ); $middlewareDispatcher->addMiddleware($middleware);
为了在以下中间件中获得身份实例,请使用请求实例的 getAttribute()
方法
public function actionIndex(\Psr\Http\Message\ServerRequestInterface $request): \Psr\Http\Message\ResponseInterface { $identity = $request->getAttribute(\Yiisoft\Auth\Middleware\Authentication::class); // ... }
HTTP 基本身份验证
基本 HTTP 身份验证通常用于在浏览器中输入登录名和密码。凭据通过 $_SERVER['PHP_AUTH_USER']
和 $_SERVER['PHP_AUTH_PW']
传递。
$authenticationMethod = (new \Yiisoft\Auth\Method\HttpBasic($identityRepository)) ->withRealm('Admin') ->withAuthenticationCallback(static function ( ?string $username, #[\SensitiveParameter] ?string $password, \Yiisoft\Auth\IdentityWithTokenRepositoryInterface $identityRepository ): ?\Yiisoft\Auth\IdentityInterface { return $identityRepository->findIdentityByToken($username, \Yiisoft\Auth\Method\HttpBasic::class); });
域通常是在浏览器提示中要求输入登录名和密码时看到的。在上方设置的定制身份验证回调与未指定时的默认行为相同。
HTTP 携带者身份验证
携带者 HTTP 身份验证通常用于 API。认证令牌通过 WWW-Authenticate
标头传递。
$authenticationMethod = new \Yiisoft\Auth\Method\HttpBearer($identityRepository);
自定义 HTTP 标头身份验证
如果您不想使用携带者令牌身份验证,则可以使用自定义 HTTP 标头。
$authenticationMethod = (new \Yiisoft\Auth\Method\HttpHeader($identityRepository)) ->withHeaderName('X-Api-Key') ->withPattern('/(.*)/'); // default
在上面的示例中,我们使用 X-Api-Key
标头的完整值作为令牌。
查询参数身份验证
此身份验证方法主要用于无法发送头部的客户端。如果您没有此类客户端,我们建议不要使用它。
$authenticationMethod = (new \Yiisoft\Auth\Method\QueryParameter($identityRepository)) ->withParameterName('token');
使用多个身份验证方法
要使用多个身份验证方法,请使用 Yiisoft\Auth\Method\Composite
$authenticationMethod = new \Yiisoft\Auth\Method\Composite([ $bearerAuthenticationMethod, $basicAuthenticationMethod ]);
扩展和集成点
\Yiisoft\Auth\IdentityInterface
应由您的应用程序身份类实现。通常,这是User
。\Yiisoft\Auth\IdentityRepositoryInterface
应由您的应用程序身份存储库类实现。通常,这是UserIdentity
。\Yiisoft\Auth\IdentityWithTokenRepositoryInterface
可以由您的应用程序身份存储库类额外实现,如果需要基于令牌的身份验证。通常,这是UserIdentity
。\Yiisoft\Auth\AuthenticationMethodInterface
可以实现以提供您自己的身份验证方法。
文档
如果您需要帮助或有问题,请访问 Yii 论坛,这是一个不错的选择。您还可以查看其他 Yii 社区资源。
许可证
Yii Auth 是免费软件。它根据 BSD 许可证的条款发布。有关更多信息,请参阅 LICENSE
。
由 Yii 软件 维护。