Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi pengesahan?
Dalam era maklumat moden, pengesahan identiti adalah bahagian penting dalam kehidupan seharian kita. Sama ada dalam rangkaian atau dalam kehidupan sebenar, kami perlu memastikan bahawa hanya pengguna yang diberi kuasa boleh mengakses sumber tertentu atau melakukan operasi tertentu. Melaksanakan fungsi pengesahan dalam pangkalan data adalah langkah yang sangat penting untuk melindungi keselamatan data dengan berkesan. Artikel ini akan memperkenalkan cara mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi pengesahan dan menyediakan contoh kod yang sepadan.
Pertama, kita perlu mencipta jadual pengguna untuk menyimpan maklumat pengesahan pengguna. Jadual hendaklah mengandungi medan berikut:
Berikut ialah contoh kod MySQL untuk mencipta jadual pengguna:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE, password VARCHAR(255), email VARCHAR(255) UNIQUE, created_at DATETIME );
Seterusnya, kita perlu mencipta jadual sesi untuk mengurus maklumat sesi pengguna. Semasa proses pengesahan, kami membuat sesi untuk setiap pengguna dan menjana ID sesi. ID sesi ini akan digunakan untuk mengesahkan pengguna dan mengesahkan apabila pengguna mengakses sumber yang dilindungi. Jadual sesi hendaklah mengandungi medan berikut:
Berikut ialah contoh kod MySQL untuk mencipta jadual sesi:
CREATE TABLE sessions ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, session_id VARCHAR(255), expired_at DATETIME, FOREIGN KEY (user_id) REFERENCES users(id) );
Setelah pengguna berjaya log masuk dan mengesahkan, kami akan menjana ID sesi dan menyimpannya ke dalam jadual sesi. Apabila pengguna mengakses sumber yang dilindungi, kami akan mengesahkan kesahihan dan tamat tempoh ID sesi. Dengan membandingkan ID pengguna dengan ID pengguna dalam jadual sesi, kami boleh memastikan bahawa pengguna mempunyai sesi yang sah dan mempunyai akses yang dibenarkan.
Sebagai tambahan kepada struktur jadual di atas, kami juga memerlukan kod yang sepadan untuk melaksanakan fungsi pengesahan. Apabila pengguna mendaftar, kita perlu memasukkan maklumat pengguna baharu ke dalam jadual pengguna. Apabila pengguna log masuk, kita perlu menanyakan jadual pengguna, mengesahkan ketepatan nama pengguna dan kata laluan, dan menjana ID sesi baharu dan menyimpannya dalam jadual sesi. Apabila pengguna mengakses sumber yang dilindungi, kami perlu mengesahkan kesahihan dan tamat tempoh ID sesi.
Berikut ialah contoh fungsi untuk mengesahkan identiti pengguna dan menjana ID sesi:
import hashlib import datetime import random import string def authenticate(username, password): # 查询用户表,验证用户名和密码的正确性 query = "SELECT * FROM users WHERE username = %s AND password = %s" cursor.execute(query, (username, hashlib.sha256(password.encode()).hexdigest())) user = cursor.fetchone() if user: # 生成新的会话ID session_id = ''.join(random.choices(string.ascii_letters + string.digits, k=32)) # 计算会话的过期时间(例如,30分钟后) expired_at = datetime.datetime.now() + datetime.timedelta(minutes=30) # 将会话ID存储到会话表中 query = "INSERT INTO sessions (user_id, session_id, expired_at) VALUES (%s, %s, %s)" cursor.execute(query, (user['id'], session_id, expired_at)) connection.commit() return session_id else: return None
Dengan struktur jadual dan contoh kod di atas, kami boleh mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi pengesahan. Dengan mereka bentuk struktur jadual dengan betul dan menggunakan penyulitan untuk menyimpan kata laluan, kami boleh melindungi identiti pengguna dan keselamatan data dengan berkesan. Pada masa yang sama, kami juga menyediakan contoh kod yang sepadan untuk menjadikan pelaksanaan fungsi pengesahan lebih mudah dan lebih dipercayai.
Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi pengesahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!