cblink/laravel-sso

1.0.1 2018-08-15 04:25 UTC

This package is not auto-updated.

Last update: 2024-09-15 06:06:36 UTC


README

安装

composer require cblink/laravel-sso -vvv

配置

发布 config.php 和迁移文件

php artisan vendor:publish --provider="Cblink\Sso\SsoServiceProvider"

迁移

php artisan migrate

此命令将创建一个名为 sso 的表以授权。

创建 sso 路由

php artisan sso:route

您也可以通过命令创建 sso

php artisan sso:create

添加到您的 auth.php

'guards' => [
    'sso' => [
        'driver' => 'session',
        'provider' => 'sso',
    ],
],
'providers' => [
    'sso' => [
        'driver' => 'sso',
        'table' => 'sso',
    ],
],

用法

在客户端获取票据

// sso client system
Route::get('sso', function () {
    $client = new \GuzzleHttp\Client();
    
    $response = $client->get('http://yourdomain/sso/getTicket?'.http_build_query([
        'app_id' => 'your_app_id',
        'secret' => 'your_secret',
    ]));

    $result = json_decode((string)$response->getBody(), true);

    if ($ticket = $result['ticket'] ?? null) {
        return redirect('http://yourdomain/sso/login?ticket='.$ticket);
    }
});

重定向到任何 URL

将中间件添加到 Http/kernel.php

protected $routeMiddleware = [
    // ...
    'ticket' => \Cblink\Sso\Http\Middleware\LoginWithTicket::class,
];

// declare route priority
protected $middlewarePriority = [
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \Cblink\Sso\Http\Middleware\LoginWithTicket::class,
    \Illuminate\Auth\Middleware\Authenticate::class,
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Illuminate\Auth\Middleware\Authorize::class,
];

在 web.php 中,在 auth 前添加 ticket

Route::group(['middleware' => ['ticket', 'auth'], function () {
    // ...
});