Cài đặt đăng nhập tập trung SSO trong laravel

1. Cài đặt thư viện

composer require subfission/cas

2. Thêm các dòng sau vào file .env

CAS_HOSTNAME=cas-domain
CAS_REAL_HOSTS=cas-domain
CAS_LOGOUT_URL=cas-logout-url"
CAS_CLIENT_SERVICE=your-domain
CAS_URI="/cas"
CAS_ENABLE_SAML=false

3. Chạy lệnh sau

php artisan vendor:publish --provider="Subfission\Cas\CasServiceProvider"

4. File app/Http/Kernel.php, thêm vào dòng sau

protected $routeMiddleware = [
        ...
        'cas.auth' => \Subfission\Cas\Middleware\CASAuth::class
];

5. File routes/web.php, chỉnh sửa như sau

Route::middleware('cas.auth')->group(function(){
    Route::get('logout',[CasController::class,'logout']);
    Route::get('/', [HomeController::class,'index']);
    // các route cần chạy sau khi đã đăng nhập cas sso
    ...
});

6. Thêm file CasController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class CasController extends Controller
{
    public function logout(){
        cas()->logout('', url('/'));
    }
}

7. Để lấy thông tin người dùng từ CAS SSO (\Subfission\Cas\Facades\Cas), có các phương thức sau:

- Cas::isAuthenticated(): Kiểm tra đã đăng nhập chưa
- Cas::getCurrentUser(): Lấy tên tài khoản (VD: nguyenhoangkieutrinh)
- Cas::getAttributes(): Lấy các thông tin khác mà dịch vụ SSO kia có thể cung cấp, VD:

[
    'email' => 'nguyenhoangkieutrinh@gmail.com',
    'full_name' => 'Nguyễn Hoàng Kiều Trinh',
    'roles' => ['admin', 'editor']
]
 

Bình luận
Zalo