n0izestr3am/laravel-sso 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

n0izestr3am/laravel-sso

Composer 安装命令:

composer require n0izestr3am/laravel-sso

包简介

Simple Laravel SSO integration (Based on zefy/laravel-sso)

README 文档

README

This package based on Simple PHP SSO integration for Laravel package.

Requirements

  • Laravel 6+
  • PHP 7.3+

Documentation

Please read Simple PHP SSO integration for Laravel docs.

Installation

Server

Install this package using composer.

$ composer require n0izestr3am/laravel-sso

Copy config file to Laravel project config/ folder.

$ php artisan vendor:publish --provider="n0izestr3am\LaravelSSO\SSOServiceProvider"

Create table where all brokers will be saved.

$ php artisan migrate --path=vendor/n0izestr3am/laravel-sso/database/migrations

Edit your app/Http/Kernel.php by create new middleware like this:

'api' => [
    'throttle:60,1',
    'bindings',
],

'sso' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    'bindings',
],

//...

Now you should create brokers. You can create new broker using following Artisan CLI command:

$ php artisan sso:broker:create {name}

Broker

Install this package using composer.

$ composer require n0izestr3am/laravel-sso

Copy config file to Laravel project config/ folder.

$ php artisan vendor:publish --provider="n0izestr3am\LaravelSSO\SSOServiceProvider"

Change type value in config/laravel-sso.php file from server to broker.

Set 3 new options in your .env file:

SSO_SERVER_URL=
SSO_BROKER_NAME=
SSO_BROKER_SECRET=

SSO_SERVER_URL is your server's http url without trailing slash. SSO_BROKER_NAME and SSO_BROKER_SECRET must be data which exists in your server's brokers table.

Edit your app/Http/Kernel.php by adding \n0izestr3am\LaravelSSO\Middleware\SSOAutoLogin::class middleware to $routeMiddleware array. It should look like this:

protected $routeMiddleware = [
    'auto_login' => \n0izestr3am\LaravelSSO\Middleware\SSOAutoLogin::class,
    //...
];

Then use like this: Use auto_login middleware

Last but not least, you need to edit app/Http/Controllers/Auth/LoginController.php. You should add two functions into LoginController class which will authenticate your client through SSO server but not your Broker page.

protected function attemptLogin(Request $request)
{
    $broker = new \n0izestr3am\LaravelSSO\LaravelSSOBroker;

    $credentials = $this->credentials($request);
    return $broker->login($credentials[$this->username()], $credentials['password']);
}

public function logout(Request $request)
{
    $broker = new \n0izestr3am\LaravelSSO\LaravelSSOBroker;

    $broker->logout();

    $this->guard()->logout();

    $request->session()->invalidate();

    return redirect('/');
}

That's all. For other Broker pages you should repeat everything from the beginning just changing your Broker name and secret in configuration file.

Example .env options:

SSO_SERVER_URL=https://server.test
SSO_BROKER_NAME=site1
SSO_BROKER_SECRET=892asjdajsdksja74jh38kljk2929023

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-06-28