Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk membina sistem pengesahan pengguna yang sangat berskala menggunakan PHP dan REDIS

Bagaimana untuk membina sistem pengesahan pengguna yang sangat berskala menggunakan PHP dan REDIS

王林
王林asal
2023-07-21 21:13:111423semak imbas

Cara membina sistem pengesahan pengguna yang sangat berskala menggunakan PHP dan Redis

Petikan:
Pengesahan pengguna ialah bahagian penting dalam aplikasi web moden, yang memastikan bahawa hanya pengguna yang disahkan boleh mengakses sumber yang dilindungi. Dalam artikel ini, kita akan mempelajari cara membina sistem pengesahan pengguna yang sangat berskala menggunakan PHP dan Redis, dan menyediakan contoh kod yang sepadan.

1. Mengapa memilih PHP dan Redis?

PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas Ia mempunyai keupayaan sambungan pangkalan data yang kuat dan ciri pembangunan pesat. Redis ialah pangkalan data dalam memori berprestasi tinggi yang mempunyai kelajuan akses yang sangat pantas dan menyediakan ketekunan data yang boleh dipercayai.

Gabungan PHP dan Redis boleh membawa banyak faedah, seperti:

  1. Prestasi tinggi: Redis ialah pangkalan data berasaskan memori, jadi ia boleh menyediakan operasi baca dan tulis yang sangat pantas. Ini amat sesuai untuk sistem pengesahan pengguna kerana ia memerlukan pertanyaan yang kerap untuk maklumat pengesahan pengguna.
  2. Skalabiliti: Redis ialah pangkalan data teragih yang boleh dikembangkan dengan mudah kepada berbilang pelayan. Ini membolehkan kami dengan mudah meningkatkan kapasiti pelayan untuk menampung situasi trafik yang tinggi.
  3. Kebolehpercayaan yang tinggi: Redis menyediakan ketekunan data, yang bermaksud walaupun pelayan gagal, maklumat pengesahan pengguna tidak akan hilang.

2. Elemen asas mereka bentuk sistem pengesahan pengguna

Sebelum mula membina sistem pengesahan pengguna, kita perlu menjelaskan elemen asasnya:

  1. Pendaftaran pengguna: Benarkan pengguna membuat akaun baharu dan menyimpan maklumat berkaitan mereka dalam dalam pangkalan data.
  2. Log Masuk Pengguna: Mengesahkan bukti kelayakan yang diberikan oleh pengguna dan memberikannya bukti kelayakan pengesahan sementara.
  3. Pengesahan: Sahkan bukti kelayakan pengesahan pengguna dan tentukan sama ada mereka mempunyai kebenaran untuk mengakses sumber yang dilindungi.
  4. Log Keluar Pengguna: Batalkan kelayakan pengesahan pengguna dan padamkannya daripada pangkalan data.

3 Gunakan Redis untuk menyimpan maklumat pengguna

Pertama, kita perlu mencipta token unik untuk setiap pengguna dan menyimpannya dalam Redis. Token ini akan diberikan apabila pengguna log masuk dan akan dipadamkan apabila pengguna log keluar.

Berikut ialah contoh kod untuk menjana dan menyimpan token pengguna:

// 生成唯一令牌
$token = uniqid();

// 将令牌存储到Redis中
$redis = new Redis();
$redis->connect('localhost', 6379);
$redis->set($token, $userId);
$redis->expire($token, 3600);

Dalam kod di atas, kami menggunakan kaedah set() Redis untuk menyimpan token dan kaedah tamat() untuk menetapkan masa tamat tempoh kad itu ialah 3600 saat.

4. Log masuk dan pengesahan pengguna

Apabila pengguna log masuk, kami perlu mengesahkan kelayakan yang diberikan oleh pengguna dan memberikan mereka token. Di bawah ialah contoh kod untuk mengesahkan kelayakan pengguna dan memberikan token:

// 验证用户凭据
if (validateCredentials($username, $password)) {
    // 生成唯一令牌
    $token = uniqid();

    // 将令牌存储到Redis中
    $redis = new Redis();
    $redis->connect('localhost', 6379);
    $redis->set($token, $userId);
    $redis->expire($token, 3600);

    // 将令牌发送给用户
    echo $token;
}

Dalam kod di atas, kami mula-mula mengesahkan kelayakan pengguna menggunakan fungsi validateCredentials(). Jika bukti kelayakan adalah sah, token unik diberikan dan disimpan dalam Redis. Akhirnya, token dihantar kepada pengguna.

Semasa mengesahkan, kami hanya perlu menyemak sama ada token yang diberikan oleh pengguna wujud dalam Redis dan sah. Berikut ialah contoh kod untuk mengesahkan pengguna:

// 检查用户的令牌是否存在于Redis中
if ($redis->exists($token)) {
    // 获取用户身份验证信息
    $userId = $redis->get($token);

    // 在这里进行进一步的身份验证逻辑...

    // 其他操作...
} else {
    // 令牌无效,跳转到登录页面或执行其他操作...
}

Dalam kod di atas, kami menggunakan kaedah exists() Redis untuk menyemak sama ada token yang disediakan oleh pengguna wujud. Jika token ada, logik pengesahan pengguna boleh diproses lebih lanjut.

5. Log keluar pengguna

Apabila pengguna log keluar, kami perlu membatalkan token mereka dan memadamkannya daripada Redis. Berikut ialah contoh kod untuk membatalkan token pengguna:

if ($redis->exists($token)) {
    // 使令牌无效
    $redis->del($token);

    // 执行其他操作...
}

Dalam kod di atas, kami telah memadamkan token pengguna menggunakan kaedah del() Redis.

6. Kesimpulan

Dengan menggabungkan PHP dan Redis, kami boleh membina sistem pengesahan pengguna yang sangat berskala. Dalam artikel ini, kami mempelajari cara menggunakan PHP dan Redis untuk menyimpan maklumat pengguna, melakukan log masuk dan pengesahan pengguna dan log keluar pengguna.

Sudah tentu ini hanyalah contoh dan boleh diubah suai serta dikembangkan mengikut keperluan sebenar. Saya harap artikel ini membantu anda memahami cara membina sistem pengesahan pengguna yang sangat berskala.

Atas ialah kandungan terperinci Bagaimana untuk membina sistem pengesahan pengguna yang sangat berskala menggunakan PHP dan REDIS. 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