zhimei/sso
Composer 安装命令:
composer require zhimei/sso
包简介
SSO authentication to Laravel 5 and Lumen
README 文档
README
SSO server SSO authentication in Laravel 5.x & Lumen
Installation
Require this package in your composer.json and run composer update.
"Zhimei/sso": "dev-master"
####For Laravel 5: After updating composer, add the ServiceProvider to the providers array in config/app.php
Zhimei\sso\SsoServerServiceProvider::class
As well as the Facade :
'SsoServer' => 'Zhimei\sso\Facades\SsoServer'
Then publish the package's config using one of those methods :
$ php artisan config:publish Zhimei/sso
After publishing config, please config the items in your config/sso.php
'sso_server' => [ 'model' => env('SSO_MODEL'), //It's abstract of Zhimei\sso\SsoServerModeAbstract 'driver' => env('SSO_SERVER_DRIVER', 'file'), //file or memcached (recommend memcached) 'clients' => [ //'app_id' => ['app_id'=>'app_id', 'app_secret'=>'app_secret', 'return_url'=>'return_url'], 'app_id_client_www' => ['app_id'=>'app_id_client_www', 'app_secret'=>'app_secret_24A234FDG34S54GS', 'return_url'=>'http://www.zhimei360.com/'], //... ], ],
####For Lumen : After updating composer, register ServiceProvider in bootstrap/app.php
$app->register(Zhimei\sso\SsoServerServiceProvider::class);
configure in .env
SSO_MODEL=App\Models\SsoUser ####It's abstract of Zhimei\sso\SsoServerModeAbstract SSO_SERVER_DRIVER=file SSO_CLIENT_APP_ID_1=app_id_1 SSO_CLIENT_APP_SECRET_1=asdfsdfdf34rfdfE SSO_CLIENT_APP_RETURN_URL_1=http://sso/ # SSO_CLIENT_APP_ID_2= # SSO_CLIENT_APP_SECRET_2= # SSO_CLIENT_APP_RETURN_URL_2= # SSO_CLIENT_APP_ID_3= # SSO_CLIENT_APP_SECRET_3= # SSO_CLIENT_APP_RETURN_URL_3=
####For Both: App\Models\SsoUser
<?php namespace App\Models; use Zhimei\sso\SsoServerModeAbstract; class SsoUser extends SsoServerModeAbstract { /** * @param $username * @param $password * @return bool */ public function authenticate($username, $password){ $user = User::where('username', $username)->first(); if(empty($user)){ return false; } if(!password_verify($password, $user->password)){ return false; } return true; } /** * @param $username * @return null */ public function getUserByUsername($username){ $user = User::where('username', $username)->first(); if(empty($user)){ return null; } return $user->toArray(); } /** * @param $user_id */ public function getUserById($user_id){ } }
###Usage Add the follow code to your app/Http/routes.php
#for Lumen $app->get('/', function(){ $method = app('request')->input('command'); try{ $return = app('SsoServer')->{$method}(); }catch (\Exception $e){ if($method=='attach'){ throw new \Exception($e->getMessage()); }else { return ['fail' => true, 'msg' => $e->getMessage()]; } } return $return; }); $app->post('login', ['as'=>'sso.login', function()use($app){ return $app['SsoServer']->login(); }]); #for Laravel Route::get('/', function(){ $method = \Request::input('command'); try{ $return = app('SsoServer')->{$method}(); }catch (\Exception $e){ if($method=='attach'){ throw new \Exception($e->getMessage()); }else { return ['fail' => true, 'msg' => $e->getMessage()]; } } return $return; }); Route::post('login', ['as'=>'sso.login', function()use(){ return \SsoServer::login(); }]);
SSO Client
Installation
Require this package in your composer.json and run composer update.
"Zhimei/sso": "dev-master"
After updating composer, add the ServiceProvider to the providers array in config/app.php
Zhimei\sso\SsoClientServiceProvider::class
As well as the Facade :
'SsoClient' => 'Zhimei\sso\Facades\SsoClient'
Then publish the package's config using one of those methods :
$ php artisan config:publish Zhimei/sso
###Configuration Add to .env
SSO_SERVER_URL =
SSO_APP_ID =
SSO_APP_SECRET =
###Available Functions Get URL to attach session at SSO server.
app('SsoClient')->getAttachUrl();
Attach our session to the user's session on the SSO server.
/** * Attach our session to the user's session on the SSO server. * @param null $state * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ return app('SsoClient')->attach();
Get user information.
app('SsoClient')->getUserInfo();
Logout at sso server
app('SsoClient')->logout();
###Usage examples In your routes.php use the following code:
#for Lumen $app->get('login', function()use($app){ if($app['SsoClient']::isAttached()){ $userInfo = app('SsoClient')->getUserInfo(); if(empty($userInfo)){ return app('SsoClient')->reAttach(); } return $userInfo; }else{ return $app['SsoClient']::attach(); } }); $app->get('logout', function()use($app){ $app['SsoClient']->logout(); }); #for Laravel Route::get('login', function(){ if(\SsoClient::isAttached()){ $userInfo = app('SsoClient')->getUserInfo(); if(empty($userInfo)){ return app('SsoClient')->reAttach(); } return $userInfo; }else{ return \SsoClient::attach(); } }); Route::get('logout', function(){ \SsoClient::logout(); });
zhimei/sso 适用场景与选型建议
zhimei/sso 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 664 次下载、GitHub Stars 达 17, 最近一次更新时间为 2015 年 12 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「SSO」 「laravel」 「lumen」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 zhimei/sso 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 zhimei/sso 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 zhimei/sso 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Testing Suite For Lumen like Laravel does.
Stackdriver handler for Monolog (codeinternetapplications/monolog-stackdriver Fork).
Class to generate a standard structure for api json responses
Amqp classes
Audit changes of your Eloquent models in Laravel/Lumen
Simple Single Sign-On
统计信息
- 总下载量: 664
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 17
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-12-14