nue-extensions / sso-samarinda
Nue Extensions 的 SSO 集成。
1.02
2022-11-12 12:45 UTC
Requires
- php: >=7.0.0
- novay/nue: ^3.0
- zefy/php-simple-sso: ^1.0
Requires (Dev)
- phpunit/phpunit: ~6.0
README
将 SSO-Samarinda 集成到您的应用中。
安装
- 通过 Composer 安装
composer require nue-extensions/sso-samarinda
- 在 Nue 的侧边栏中显示 SSO-Samarinda 菜单
php artisan nue:import sso-samarinda
- 更新
table users
php artisan migrate --path=vendor/nue-extensions/sso-samarinda/database/migrations/2014_10_12_000000_alter_users_table.php
此命令将在您的 users
表中插入名为 uid
的新字段。您也可以不使用此命令手动添加 uid
字段。
配置
将以下配置添加到配置文件 config/nue.php
中:
'extensions' => [ 'sso-samarinda' => [ // Arahkan kemana Anda akan tuju setelah login berhasil 'redirect_to' => '/home', // Pilih guard auth default yang dipakai 'guard' => 'web', // Beberapa parameter yang dibutuhkan untuk broker. Bisa ditemukan di // https://sso.samarindakota.go.id 'server_url' => env('SSO_SERVER_URL', null), 'broker_name' => env('SSO_BROKER_NAME', null), 'broker_secret' => env('SSO_BROKER_SECRET', null), // Tentukan Model User yang dipakai 'model' => '\App\Models\User' ], ],
使用方法
- 配置完成后,您可以在
env
文件中添加以下 3 个新选项:
SSO_SERVER_URL=https://sso.samarindakota.go.id SSO_BROKER_NAME= SSO_BROKER_SECRET=
SSO_SERVER_URL
包含 SSO Samarinda 的 URI。 SSO_BROKER_NAME
和 SSO_BROKER_SECRET
必须填写在 https://sso.samarindakota.go.id 上注册的应用程序的数据。
- SSO-Samarinda 的内置自定义中间件
如果您在实现过程中需要存储会话或对 User 模型进行操作,您还可以自定义提供的中间件。例如:
a) 创建新中间件
$ php artisan make:middleware SSOAutoLogin
b) 将 默认中间件 扩展到 自定义中间件
<?php namespace App\Http\Middleware; use Nue\SSOSamarinda\Http\Middleware\SSOAutoLogin as Middleware; use App\Models\User; class SSOAutoLogin extends Middleware { /** * Manage your users models as your default credentials * * @param Broker $response * @return \Illuminate\Http\RedirectResponse */ public function handleLogin($response) { $user = User::updateOrCreate(['uid' => $response['data']['id']], [ 'name' => $response['data']['name'], 'email' => $response['data']['email'], 'password' => 'default', ]); auth()->login($user); return; } }
c) 编辑 Kernel.php
protected $middlewareGroups = [ 'web' => [ ... // \Nue\SSOSamarinda\Http\Middleware\SSOAutoLogin::class, \App\Http\Middleware\SSOAutoLogin::class, ], 'api' => [ ... ], ];
- 视图实现
a) 登录
<a href="{{ route('sso.authorize') }}">Login</a>
b) 登出
<a href="{{ route('sso.logout') }}">Logout</a>
c) 手动使用(可选)
对于手动使用,您可以将以下脚本片段插入到控制器类中登录和登出功能。
protected function attemptLogin(Request $request) { $broker = new \Nue\SSOSamarinda\Service\Broker; $credentials = $this->credentials($request); return $broker->login($credentials['username'], $credentials['password']); } public function logout(Request $request) { $broker = new \Nue\SSOSamarinda\Service\Broker; $broker->logout(); $this->guard()->logout(); $request->session()->invalidate(); return redirect('/'); }
许可证
SSO-Samarinda 使用 MIT 许可证 开发。这意味着您可以在个人和商业用途中自由使用它。祝您享受!