sympla/mesa-gold-bar

一个提供从oauth2访问令牌进行远程用户识别的库。

3.2.5 2019-05-23 20:33 UTC

README

Mesa Gold是一家位于Westworld Mesa Hub的度假村和酒吧。游客在参观公园结束后在此放松。

这个库可以帮助通过访问令牌识别用户。

安装

使用composer安装此包

$ composer require sympla/mesa-gold-bar ~3.0

这就完成了。

用法

认证器在其构造函数中接收两个参数:一个Guzzle客户端和一个字符串形式的认证端点。构建完成后,您可以使用原始令牌或PSR-7请求对象来识别用户

<?php

require_once "vendor/autoload.php";

use Sympla\Auth\OAuth2RemoteAuthentication;

$authenticator = new OAuth2RemoteAuthentication(
    new GuzzleHttp\Client,
     'https://example.com/api/whoami'
);

//Gets the user from the request object
$request = Request::createFromGlobals(); // hydrates the psr-7 request object
$user = $authenticator->getUserFromRequest($request);
// Or, alternatively, gets the user from the token directly:
$token = explode(" ", $_SERVER['HTTP_AUTHORIZATION'])[1];
$user = $authenticator->getUserFromToken($token);

var_dump($user); // dumps information fetched from the endpoint server about the user.

中间件

该库现在还有一个用于检索用户凭据的SlimMiddleware。

只需添加中间件

<?php
#middleware.php
$app->add(new \Sympla\Auth\Middleware\SlimMiddleware(
    new \GuzzleHttp\Client,
    $app->getContainer(),
    [
        'protected' => ['/^\/admin\//'], //This is a regex for the protected URIs
        'authentication_server' => getenv('USER_INFO_ENDPOINT') //This is where the middleware
                                                                //should try to fetch the user info from
    ]
));

然后,从任何protected路由中,您可以从DIC中简单获取user对象

<?php
#routes.php
$app->get('/admin', function ($request, $response, $args) {
    $user = $this->get('user');
    var_dump($user);
});

与Laravel一起使用

安装后,将服务提供者在您的Laravel应用程序的config/app.php中注册

Sympla\Auth\Laravel\ServiceProvider::class

然后,发布配置

$ php artisan vendor:publish --provider="Sympla\Auth\Laravel\ServiceProvider"

一旦您的应用程序配置完成,请转到config/auth.php并更改guard部分

     'guards' => [
         'api' => [
             'driver' => 'token',
             'provider' => 'oauth',
         ],
     ],

然后更改providers部分

    'providers' => [
        'oauth' => [
            'driver' => 'oauth'
            'model' => App\User::class,
        ],
    ],

然后,将auth:api激活为您的api的中间件。

与Lumen一起使用

安装后,将服务提供者、路由中间件、Hash外观和启用eloquent注册到您的Lumen应用程序的bootstrap/app.php

//Service provider
$app->register(Sympla\Auth\Lumen\ServiceProvider::class);

// Route middleware
$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);

//Hash facade
$app->withFacades(true, ['Illuminate\Support\Facades\Hash' => 'Hash']);

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

注册服务提供者后,在Lumen应用程序中安装包以发布

$ composer require laravelista/lumen-vendor-publish

然后,发布配置

$ php artisan vendor:publish --provider="Sympla\Auth\Lumen\ServiceProvider"

一旦您的应用程序配置完成,请转到config/auth.php,如果该文件不存在,则创建它,并更改/创建guard部分

     'guards' => [
         'api' => [
             'driver' => 'token',
             'provider' => 'oauth',
         ],
     ],

然后更改providers部分

    'providers' => [
        'oauth' => [
            'driver' => 'oauth'
            'model' => App\User::class,
        ],
    ],

联系方式

Pedro Igor pedro.igor@sympla.com.br

许可证

该项目采用MIT许可证分发。有关更多信息,请参阅[LICENSE][LICENSE.md]。