unila / sso
SSO-UNILA 的实用认证
dev-master
2023-09-11 08:01 UTC
Requires
- php: >=7.1.0
- apereo/phpcas: 1.5.0
This package is auto-updated.
Last update: 2024-09-27 09:36:26 UTC
README
PHP 库,用于简化应用程序使用乌尼拉大学 SSO 登录功能的操作。
Laravel 中的安装
-
在您的笔记本电脑/PC 上安装 Composer
-
在您的项目终端中运行以下命令以安装库 composer
composer install -
在您的项目终端中运行以下命令以安装库 Unila/SSO
composer require unila/sso
使用方法
1. 移除命名空间
为了使您的代码看起来整洁,并避免编写糟糕的代码,您可以在控制器头部添加命令以移除 namespace
use SSO\SSO;
之后,仅使用如下命令进行调用
SSO::$command();
2. 身份验证
SSO::authenticate();
此调用将使浏览器重定向到 SSO 登录。如果身份验证成功,则该函数将返回 true 并将其传递给需要该身份验证的应用程序。
3. 获取用户详细信息
SSO::getUser();
此函数将返回包含成功身份验证的用户详细信息的 stdClass 对象。部分代码如下
$user = SSO::getUser();
echo $user->username // menampilkan username dari user
echo $user->email // menampilkan email dari user
echo $user->nm_pengguna // menampilkan nama lengkap dari user
echo $user->a_aktif // menampilkan status aktif dari user
3. 检查身份验证
SSO::check();
此函数用于检查用户是否曾经成功身份验证。
4. 登出
SSO::logout();
此调用将结束用户身份验证。
SSO::logout(url('http://unila.ac.id'));
此调用将结束用户身份验证并将其重定向到乌尼拉仪表板页面。
上述两个函数用于实现单点登出。
与应用程序的连接
登录
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 自带的身份验证。
使用 Composer 在 Codeigniter 4 中使用
对于 Codeigniter 4 的使用,在文件夹 vendor/apereo/phpcas 中存在一些变化。将 phpcas.zip 文件从 vendor/unila/sso 文件夹中提取出来,然后将其复制并放置到 vendor/apereo/phpcas 文件夹中。
感谢
- PHP CAS
- RistekCSUI/SSO