unisa / sso
使用 SSO-UNISA 的实用认证
dev-master
2024-01-05 08:19 UTC
Requires
- php: >=7.1.0
- apereo/phpcas: 1.5.0
This package is auto-updated.
Last update: 2024-09-05 09:54:31 UTC
README
PHP 库,简化应用使用 UNISA SSO 登录功能。
在 Laravel 中安装
-
在您的笔记本电脑/PC 上安装 Composer
-
在您的 project 终端中运行以下命令来安装库 composer
composer install
-
在您的 project 终端中运行以下命令来安装库 unisa/SSO
composer require unisa/sso
使用方法
1. 移除命名空间
为了使您的代码看起来更整洁,避免代码质量下降,您可以在控制器头部添加命令以移除 namespace
use SSO\SSO;
之后,调用时只需使用如下命令
SSO::$command();
2. 验证
SSO::authenticate();
此调用将浏览器重定向到 SSO 登录页面。如果验证成功,则此函数将返回 true
并将其传递给需要此验证的应用程序。
3. 获取用户详情
SSO::getUser();
此函数将返回一个包含成功验证用户详情的 stdClass
对象。代码片段如下
$user = SSO::getUser();
echo $user->email // menampilkan email dari user
echo $user->first_name // menampilkan nama lengkap dari user
3. 检查验证
SSO::check();
此函数用于检查用户是否成功验证。
4. 登出
SSO::logout();
此调用将结束用户验证。
SSO::logout(url('http://unisayogya.ac.id'));
此调用将结束用户验证并重定向到 UNISA 仪表板页面。
上述两个函数用于实现单点登出。
与应用程序连接
登录
public function signing_process() {
if(SSO::authenticate()) //mengecek apakah user telah login atau belum
{
if(SSO::check()) {
$check = User::where('username', SSO::getUser()->username)->first(); //mengecek apakah pengguna SSO memiliki username yang sama dengan database aplikasi
if(!is_null($check)) {
Auth::loginUsingId($check->id_pengguna); //mengotentikasi pengguna aplikasi
session()->flash('success', 'You are logged in!');
return redirect()->route('index');
} else {
alert()->error('Data pengguna tidak ditemukan, silahkan hubungi administrator.')->html(true);
return redirect()->route('auth.login'); //mengarahkan ke halaman login jika pengguna gagal diotentikasi oleh aplikasi
}
}
} else {
return redirect()->route('auth.logout'); //me-*redirect* user jika otentikasi SSO gagal, diarahkan untuk mengakhiri sesi login (jika ada)
}
}
此函数用于检查应用程序中的 SSO 验证。
登出
public function logout() {
if(Auth::check()) { //mengecek otentikasi pada aplikasi
SSO::cookieClear(); //If destroy cookie laravel
SSO::ciCookieClear(); //If destroy cookie codeigniter4
Session::flush(); //Destroy Session
Auth::logout(); //Destroy Auth
alert()->success('Berhasil logout'); //Alert
return redirect('auth/login')->with('pesan', 'berhasil logout'); //Redirect to login page
} else {
return redirect('auth/login'); //menampilkan halaman login
}
}
此函数用于结束 SSO 和应用程序的验证会话。
中间件
if( SSO::check() || Auth::check() ) {
return $next($request);
} else {
return redirect()->route('auth.logout');
}
此函数用于检查 SSO 或 Laravel 内置的验证。
使用 Codeigniter 4 和 Composer 的方法
对于 Codeigniter 4 的使用,在 vendor/apereo/phpcas
文件夹中有所更改。将 phpcas.zip
文件从 vendor/unisa/sso
文件夹中提取出来,然后将其复制并放置到 vendor/apereo/phpcas
文件夹中。
感谢
- PHP CAS
- RistekCSUI/SSO