hyperf 的 hyperf-passport 组件,支持对多种用户进行登录授权支持Oauth2.0的四种授权模式,目前密码授权模式已完全可用。下载地址:https://github.com/richard8768/hyperf-passport
本组件参考了 laravel 的 passport 组件设计,使用体验大体和 laravel 的 passport 差不多。
> 任何问题请加QQ提问:444626008
安装前的准备 - before install
PHP>=7.4 安装依赖包
#授权依赖包 $ composer require 96qbhy/hyperf-auth $ php bin/hyperf.php vendor:publish 96qbhy/hyperf-auth #加密依赖包 $ composer require hyperf-ext/encryption $ php bin/hyperf.php vendor:publish hyperf-ext/encryption $ composer require hyperf-ext/hashing $ php bin/hyperf.php vendor:publish hyperf-ext/hashing #模板引擎和视图 $ composer require hyperf/view $ php bin/hyperf.php vendor:publish hyperf/view $ composer require league/plates #hyperf的session $ composer require hyperf/session $ php bin/hyperf.php vendor:publish hyperf/session
使用 php bin/hyperf.php gen:key 命令来生成密钥,并将KEY值复制到文件 config/autoload/encryption.php中的env('AES_KEY', 'place_to_hold_key')
编辑文件config/autoload/view.php配置视图默认引擎:
<?php
declare(strict_types=1);
use Hyperf\View\Engine\PlatesEngine;
use Hyperf\View\Mode;
return [
// 使用的渲染引擎
'engine' => PlatesEngine::class,
// 不填写则默认为 Task 模式,推荐使用 Task 模式
'mode' => Mode::TASK,
'config' => [
// 若下列文件夹不存在请自行创建
'view_path' => BASE_PATH . '/storage/view/',
'cache_path' => BASE_PATH . '/runtime/view/',
],
];
?>
在文件 config/autoload/middlewares.php中添加全局中间件
<?php
return [
// 这里的 http 对应默认的 server name,如您需要在其它 server 上使用 Session,需要对应的配置全局中间件
'http' => [
\Hyperf\Session\Middleware\SessionMiddleware::class,
],
];
?>
安装 - install
$ composer require richard8768/hyperf-passport php bin/hyperf.php vendor:publish richard8768/hyperf-passport
配置 - configuration
编辑文件 config/autoload/passport.php
在文件中引入填写自己的session用户登录URL
'session_user_login_uri' => '/your/user-login/path',
以下为passport.php文件样板
<?php
declare(strict_types=1);
return [
'session_user_login_uri' => '/user_login',
'key_store_path' => 'storage',
'client_uuids' => false,
'key' => 'E3Wxizr8gUXuBuyG7CecmGX9E9lbRzdFmqQpG2yP85eDuXzqOj',
'token_days' => null,
'refresh_token_days' => null,
'person_token_days' => null,
'database_connection' => env('DB_CONNECTION', 'default'),
'is_revoke_user_others_token' => true,//when user login if revoke user's all token except current one
];
编辑文件 config/autoload/exceptions.php
在文件中引入session中间件验证的异常处理器和passport中间件验证的异常处理器
Richard\HyperfPassport\Exception\Handler\SessionAuthenticationExceptionHandler::class Richard\HyperfPassport\PassportExceptionHandler::class
用户也可以定义自己的PassportExceptionHandler
以下为exceptions.php文件样板
<?php
declare(strict_types=1);
/**
* This file is part of Hyperf.
*
* @link https://www.hyperf.io
* @document https://hyperf.wiki
* @contact group@hyperf.io
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
*/
return [
'handler' => [
'http' => [
Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler::class,
App\Exception\Handler\AppExceptionHandler::class,
\Richard\HyperfPassport\Exception\Handler\SessionAuthenticationExceptionHandler::class,
//you can use your own exception handler instead of \Richard\HyperfPassport\PassportExceptionHandler::class
//App\Exception\Handler\AppPassportExceptionHandler::class,//user defined PassportExceptionHandler to replace below one
\Richard\HyperfPassport\PassportExceptionHandler::class,
],
],
];
编辑文件 config/autoload/auth.php
在文