michalsn / codeigniter-passage
CodeIgniter 4 框架的 Passage 集成
v1.0.0
2023-07-23 10:37 UTC
Requires
- php: ^8.0
- firebase/php-jwt: ^6.8
- guzzlehttp/guzzle: ^7.0.1
- phpfastcache/phpfastcache: ^9.1
Requires (Dev)
- codeigniter4/devkit: ^1.0
- codeigniter4/framework: ^4.2
- rector/rector: 0.17.6
This package is auto-updated.
Last update: 2024-09-05 19:09:44 UTC
README
Passage 的基本集成 - 由 passkeys 提供的无密码身份验证 Passage
安装
Composer
composer require michalsn/codeigniter-passage
手动
以下示例中,我们假设此项目的文件位于 app/ThirdParty/passage
目录。
下载此项目,然后通过编辑 app/Config/Autoload.php
文件并添加 Michalsn\CodeIgniterPassage
命名空间到 $psr4
数组来启用它,如下例所示
<?php namespace Config; use CodeIgniter\Config\AutoloadConfig; class Autoload extends AutoloadConfig { // ... public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', 'Michalsn\CodeIgniterPassage' => APPPATH . 'ThirdParty/passage/src', ]; // ...
同时,将所需的辅助程序添加到同一文件下的 $files
数组中
// ... public $files = [ APPPATH . 'ThirdParty/passage/src/Common.php', ]; // ...
配置
- 按照 快速入门 进行操作
- 在 Passage 控制台中创建一个应用
php spark passage:publish
- 将配置文件复制到App
命名空间- 填写配置变量或使用 .env 文件
- 将 Passage 元素添加到您的前端
- 您可以使用
passageStateless
过滤器作为您的中间件实现
辅助函数
passageAppId()
将返回您的 AppIdpassageId()
将返回您的用户 id(如果您使用的是passageStateless
过滤器),您也可以通过以下方式自行设置:passageId($userId)
示例
<?php namespace App\Controllers; use Michalsn\CodeIgniterPassage\Exceptions\PassageException; class Home extends BaseController { public function index() { try { $passage = service('passage'); $userId = $passage->authenticateRequest($this->request); $data = ['user' => $passage->user->get($userId)]; } catch (PassageException $e) { return $this->response->setHeader(401)->setBody('401 Unauthorized'); } return view('home/index', $data); } }