Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi log masuk tunggal?

Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi log masuk tunggal?

WBOY
WBOYasal
2023-10-31 08:33:201256semak imbas

Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi log masuk tunggal?

Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi log masuk tunggal?

Dengan perkembangan Internet, ia telah menjadi situasi biasa bahawa pengguna perlu log masuk ke akaun yang berbeza dalam aplikasi yang berbeza. Untuk meningkatkan pengalaman dan kemudahan pengguna, teknologi Single Sign-On (SSO) telah wujud. Teknologi SSO membolehkan pengguna mengakses berbilang aplikasi melalui satu log masuk, mengelakkan masalah kerap memasukkan akaun dan kata laluan.

Sebelum mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi log masuk tunggal, anda perlu memahami prinsip asas SSO. Biasanya, SSO dilaksanakan melalui tiga bahagian: pembekal identiti (Penyedia Identiti, dirujuk sebagai IdP), aplikasi (Penyedia Perkhidmatan, dirujuk sebagai SP) dan pengguna. Apabila pengguna log masuk buat kali pertama, pembekal identiti akan mengesahkan maklumat identiti pengguna dan mengeluarkan token identiti (Token). Apabila pengguna mengakses aplikasi lain, aplikasi akan mengesahkan token identiti dengan pembekal identiti, dan jika pengesahan berjaya, pengguna tidak perlu log masuk semula.

Berikut ialah contoh kod untuk mereka bentuk struktur jadual MySQL selamat untuk melaksanakan fungsi log masuk tunggal:

-- 创建用户表
CREATE TABLE users (
    id INT(11) NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY (username)
);

-- 创建令牌表
CREATE TABLE tokens (
    id INT(11) NOT NULL AUTO_INCREMENT,
    user_id INT(11) NOT NULL,
    token VARCHAR(255) NOT NULL,
    expiration DATETIME NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY (token),
    INDEX (user_id),
    FOREIGN KEY (user_id) REFERENCES users (id)
);

-- 创建应用程序表
CREATE TABLE applications (
    id INT(11) NOT NULL AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    api_key VARCHAR(255) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY (api_key)
);

-- 创建用户与应用程序之间的关联表
CREATE TABLE users_applications (
    user_id INT(11) NOT NULL,
    application_id INT(11) NOT NULL,
    PRIMARY KEY (user_id, application_id),
    FOREIGN KEY (user_id) REFERENCES users (id),
    FOREIGN KEY (application_id) REFERENCES applications (id)
);

Kod sampel di atas mencipta empat jadual: pengguna (jadual pengguna), token (jadual token), aplikasi (aplikasi) jadual program) dan pengguna_aplikasi (jadual perkaitan antara pengguna dan aplikasi).

Jadual pengguna (pengguna) menyimpan maklumat asas pengguna, termasuk nama pengguna dan kata laluan. Kata laluan perlu disulitkan dan disimpan, seperti menggunakan kaedah penyulitan algoritma cincang yang selamat seperti bcrypt.

Jadual token (token) menyimpan maklumat token identiti pengguna. Selepas pengguna berjaya log masuk, token dijana dan disimpan dalam jadual token yang dikaitkan dengan pengguna. Token juga perlu menetapkan masa tamat tempoh untuk meningkatkan keselamatan.

Jadual aplikasi (aplikasi) menyimpan maklumat aplikasi yang disambungkan ke sistem SSO, termasuk nama aplikasi dan kunci API.

Jadual perkaitan antara pengguna dan aplikasi (users_applications) digunakan untuk mewujudkan hubungan antara pengguna dan aplikasi. Setiap pengguna boleh dikaitkan dengan berbilang aplikasi dan hubungan antara pengguna dan aplikasi disimpan dalam jadual ini.

Menggunakan struktur jadual MySQL di atas, fungsi log masuk tunggal boleh dilaksanakan Proses khusus adalah seperti berikut:

  1. Selepas pengguna memasukkan nama pengguna dan kata laluan pada halaman log masuk, nama pengguna dan kata laluan dihantar ke. latar belakang.
  2. Soal jadual pengguna (pengguna) di latar belakang untuk mengesahkan ketepatan nama pengguna dan kata laluan.
  3. Jika pengesahan berjaya, latar belakang menjana token (token) dan mengaitkannya dengan pengguna, menyimpannya dalam jadual token (token) dan mengembalikan token ke bahagian hadapan.
  4. Bahagian hadapan menyimpan token dalam Cookie atau LocalStorage dan menghantarnya ke aplikasi bersama-sama dengan permintaan pada lawatan berikutnya.
  5. Selepas permohonan menerima permintaan, ia mengesahkan ketepatan dan tamat tempoh token daripada jadual token (token).
  6. Jika pengesahan berjaya, pengguna dibenarkan mengakses aplikasi, jika tidak, pengguna dikehendaki log masuk semula.

Dengan struktur jadual MySQL dan contoh kod di atas, anda boleh mereka bentuk sistem log masuk tunggal yang selamat. Pada masa yang sama, untuk meningkatkan keselamatan, langkah keselamatan lain perlu diambil, seperti menggunakan protokol HTTPS untuk menghantar data, meningkatkan sekatan akses, dsb.

Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi log masuk tunggal?. 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