chadicus / slim-oauth2-middleware
Slim 框架 API 中使用的 OAuth2 中间件
v3.4.0
2023-05-09 19:38 UTC
Requires
- php: ^5.6 || ^7.0 || ^8.0
- bshaffer/oauth2-server-php: ^1.9
- chadicus/psr-middleware: ^1.1
- chadicus/slim-oauth2-http: ^3.2
- container-interop/container-interop: ^1.1
- psr/http-message: ^1.0
Requires (Dev)
- laminas/laminas-diactoros: ^1.8 || ^2.0
- php-di/php-di: ^5.4
- phpunit/phpunit: ^5.7 || ^6.5 || ^9.6 || ^10.1
- squizlabs/php_codesniffer: ^3.7
Suggests
- chadicus/slim-oauth2-routes: Offers standard OAuth2 routes for slim applications
README
在 Slim 3 框架 API 中使用 OAuth2 服务器 的中间件
要求
Chadicus\Slim\OAuth2\Middleware 需要 PHP 5.6(或更高版本)。
Composer
要添加库作为本地项目依赖项,请使用 Composer!只需将 chadicus/slim-oauth2-middleware
添加到您的项目 composer.json
文件中的依赖项,如下所示
composer require chadicus/slim-oauth2-middleware
联系
开发者可通过以下方式联系
项目构建
通过检出代码,将 Composer 添加到您的 PATH 中并运行
composer install ./vendor/bin/phpunit ./vendor/bin/phpcs
社区
示例用法
使用授权中间件的简单示例。
use Chadicus\Slim\OAuth2\Middleware; use OAuth2; use OAuth2\Storage; use OAuth2\GrantType; use Slim; //set up storage for oauth2 server $storage = new Storage\Memory( [ 'client_credentials' => [ 'administrator' => [ 'client_id' => 'administrator', 'client_secret' => 'password', 'scope' => 'superUser', ], 'foo-client' => [ 'client_id' => 'foo-client', 'client_secret' => 'p4ssw0rd', 'scope' => 'basicUser canViewFoos', ], 'bar-client' => [ 'client_id' => 'foo-client', 'client_secret' => '!password1', 'scope' => 'basicUser', ], ], ] ); // create the oauth2 server $server = new OAuth2\Server( $storage, [ 'access_lifetime' => 3600, ], [ new GrantType\ClientCredentials($storage), ] ); //create the basic app $app = new Slim\App(); // create the authorization middlware $authMiddleware = new Middleware\Authorization($server, $app->getContainer()); //Assumes token endpoints available for creating access tokens $app->get('foos', function ($request, $response, $args) { //return all foos, no scope required })->add($authMiddleware); $getRouteCallback = function ($request, $response, $id) { //return details for a foo, requires superUser scope OR basicUser with canViewFoos scope }; $app->get('foos/id', $getRouteCallback)->add($authMiddleware->withRequiredScope(['superUser', ['basicUser', 'canViewFoos']])); $postRouteCallback = function ($request, $response, $args) { //Create a new foo, requires superUser scope }; $app->post('foos', $postRouteCallback)->add($authMiddleware->withRequiredScope(['superUser'])); $app->run();