gashey/lumen-passport-resource

一个Lumen Passport客户端授权资源服务器包

0.1.7 2019-07-15 15:29 UTC

This package is auto-updated.

Last update: 2024-09-16 03:01:39 UTC


README

Build Status Code Climate Total Downloads Latest Stable Version Latest Unstable Version License

Lumen-Passport作为oauth客户端授权资源服务器

使Laravel Passport与Lumen作为客户端授权资源服务器一起工作。这使得通过Passport中间件保护路由和检查作用域变得容易。此包需要https://github.com/dusterio/lumen-passport,由Denis Mysenko创建。

一个简单的服务提供者,使Laravel Passport与Lumen作为资源服务器一起工作

依赖关系

  • PHP >= 7.1.3
  • Lumen >= 5.3

通过Composer安装

如果你还没有安装Lumen,请先安装Lumen

$ composer create-project --prefer-dist laravel/lumen lumen-app

然后安装Lumen Passport(它将获取Laravel Passport)

$ cd lumen-app
$ composer require gashey/lumen-passport-resource

修改引导流程(bootstrap/app.php文件)

我们需要启用Laravel Passport提供者和Lumen特定的提供者

// Enable Facades
$app->withFacades();

// Enable Eloquent
$app->withEloquent();

// Enable the client middleware and scopes middleware (shipped with Passport)
$app->routeMiddleware([
    'client' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
    'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class,
]);

// Finally register three service providers - original one and Lumen adapter
$app->register(Laravel\Passport\PassportServiceProvider::class);
$app->register(Dusterio\LumenPassport\PassportServiceProvider::class);
$app->register(Gashey\LumenPassportResource\PassportServiceProvider::class);

运行Gashey Passport迁移

# Create new tables for Gashey Passport 
php artisan migrate

资源服务器公钥

此包需要你的Passport授权服务器的公钥。

将授权服务器项目的“storage”文件夹中的“oauth-public.key”文件复制到资源服务器项目的“storage”文件夹。

配置

编辑config/auth.php以适应您的需求。一个简单的例子

return [
    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],

    'guards' => [
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => \App\User::class
        ]
    ]
];

bootstrap/app.php中加载配置,因为Lumen不会自动加载配置文件

$app->configure('auth');

用户模型

确保您的用户模型使用Passport的HasApiTokens特质,例如。

class User extends Model implements AuthenticatableContract, AuthorizableContract
{
    use HasApiTokens, Authenticatable, Authorizable;

    /* rest of the model */
}

保护路由

将客户端和作用域中间件添加到您的路由中

$router->group(['middleware' => ['client', 'scopes:...'], 'prefix' => 'api/v1'], function () use ($router) {
    
});

使用Apache httpd运行

如果您正在使用Apache网络服务器,它可能会删除授权头,从而破坏Passport。

请将以下内容直接添加到您的配置中或添加到.htaccess

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

许可证

MIT许可证(MIT)版权所有(c)2019 George Kofi Hagan

特此授予任何获得本软件及其相关文档文件(以下简称“软件”)副本的人免费许可,以不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许软件的接受者执行上述操作,前提是符合以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是基于合同、侵权或其他方式,源于、因或与软件或软件的使用或其他交易有关。