Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan Sesi PHP untuk mencapai log masuk tunggal merentas domain

Gunakan Sesi PHP untuk mencapai log masuk tunggal merentas domain

WBOY
WBOYasal
2023-10-12 14:12:241106semak imbas

利用 PHP Session 跨域实现单点登录

Gunakan Sesi PHP untuk mencapai daftar masuk tunggal merentas domain

Dengan perkembangan teknologi Internet, Single Sign-On (Single Sign -Hidup, dirujuk sebagai SSO) telah menjadi keperluan untuk banyak tapak web dan aplikasi. SSO membolehkan pengguna untuk mengesahkan dengan satu log masuk tanpa perlu log masuk semula merentasi berbilang domain berkaitan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Sesi PHP untuk melaksanakan log masuk tunggal merentas domain.

Melaksanakan log masuk tunggal memerlukan tiga komponen utama berikut:

  1. Pusat Pengesahan: Bertanggungjawab untuk pengesahan dan kebenaran log masuk pengguna.
  2. Aplikasi Utama: Aplikasi dengan fungsi utama.
  3. Sub Application: Aplikasi lain yang berkaitan dengan aplikasi utama.

Berikut ialah contoh kod khusus:

Contoh kod pusat pengesahan (auth_center.php):

<?php

// 启动会话
session_start();

// 用户登录验证
function authenticateUser($username, $password) {
    // 进行用户验证逻辑
    // ...

    // 验证成功,保存用户信息到 Session 中
    $_SESSION['username'] = $username;
    // 其他需要保存的用户信息
    // ...
}

// 判断用户是否已登录
function isUserLoggedIn() {
    return isset($_SESSION['username']);
}

// 用户注销
function logoutUser() {
    session_unset();   // 清除 Session 中的所有数据
    session_destroy(); // 销毁 Session
}

Kod aplikasi Main contoh (main_app.php):

<?php

// 启动会话
session_start();

// 认证中心的 URL
$authCenterUrl = 'http://auth-center.com/auth_center.php';

// 判断用户是否已登录
function isUserLoggedIn() {
    return isset($_SESSION['username']);
}

// 单点登录逻辑
if (!isUserLoggedIn()) {
    // 跳转到认证中心进行登录
    header('Location: ' . $authCenterUrl);
}

// 获取用户信息
$username = $_SESSION['username'];
// 其他用户信息的获取
// ...

// 主应用主体逻辑
// ...

Contoh kod sub-aplikasi (sub_app.php):

<?php

// 启动会话
session_start();

// 认证中心的 URL
$authCenterUrl = 'http://auth-center.com/auth_center.php';

// 单点登录逻辑
if (!isset($_SESSION['username'])) {
    // 跳转到认证中心进行登录
    header('Location: ' . $authCenterUrl);
}

// 获取用户信息
$username = $_SESSION['username'];
// 其他用户信息的获取
// ...

// 子应用主体逻辑
// ...

Dalam contoh kod di atas, pusat pengesahan bertanggungjawab untuk log masuk pengguna pengesahan dan kebenaran Aplikasi dan sub-aplikasi digunakan untuk menunjukkan kesan log masuk tunggal.

Apabila menggunakannya, anda perlu meletakkan tiga contoh kod di atas di bawah nama domain masing-masing, dan mengkonfigurasi nama domain mengikut situasi sebenar. URL pihak berkuasa pensijilan perlu dikonfigurasikan dalam aplikasi utama dan sub-aplikasi.

Dalam pelaksanaan log masuk tunggal, aplikasi utama dan sub-aplikasi menentukan sama ada pengguna dilog masuk dengan menyemak sama ada maklumat pengguna wujud dalam Sesi. Jika anda tidak log masuk, lompat ke pusat pensijilan untuk log masuk. Selepas pusat pengesahan berjaya log masuk, maklumat pengguna akan disimpan dalam Sesi Aplikasi utama dan sub-aplikasi boleh berkongsi status log masuk pengguna melalui Sesi, dengan itu merealisasikan log masuk tunggal.

Memandangkan faktor keselamatan, dalam aplikasi sebenar, pusat pensijilan juga perlu menjalankan langkah keselamatan seperti pengesahan identiti dan pengesahan Token untuk memastikan keselamatan log masuk pengguna dan kredibiliti data.

Dengan menggunakan Sesi PHP untuk mencapai log masuk tunggal merentas domain, ia boleh meningkatkan kemudahan dan pengalaman pengguna, mengurangkan operasi log masuk berulang pengguna dan meningkatkan kecekapan pengurusan pengguna keseluruhan tapak web dan aplikasi.

Atas ialah kandungan terperinci Gunakan Sesi PHP untuk mencapai log masuk tunggal merentas domain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn