


Bagaimana untuk menyelesaikan masalah menyimpan token pengguna dalam Redis
May 31, 2023 am 08:06 AMRedis menyimpan token pengguna
Apabila mereka bentuk sistem yang serupa dengan e-dagang, keperluan biasa ialah setiap halaman perlu membawa maklumat pengguna yang dilog masuk .
Terdapat dua penyelesaian biasa:
Gunakan kuki untuk menyimpan
Gunakan JWT untuk menyimpan
Tetapi jika cache Redis digunakan dalam sistem, terdapat juga penyelesaian ketiga - cache token pengguna dalam Redis.
Jana token dan simpan dalam Redis semasa log masuk
//生成一個(gè)token對(duì)象,保存在redis中 redisTemplate.opsForHash().put("token","user",user);
Sediakan token apabila setiap halaman dijana
//以JSON字符串形式返回token @RequestMapping(value = "/getToken",method = RequestMethod.GET) @ResponseBody public User getToken(){ User user = (User) redisTemplate.opsForHash().get("token", "user"); return user; }
//發(fā)送ajax請(qǐng)求,獲取token function get_token(){ $.ajax({ url:"getToken", type:"GET", dataType:"JSON", success:function(result){ //將返回的用戶信息保存在token中 var token = result; //打印登錄用戶 console.log(token); //打印登錄用戶的id console.log(token.id); document.getElementById('username').innerText = "用戶名:"+token.username; } }); }
Padamkan token semasa log keluar
rreeeRedis Mengendalikan isu token
java—Mengendalikan token berdasarkan redis
Pertama sekali, jelaskan bahawa token: token ialah cara memproses maklumat pengguna untuk bahagian hadapan dan belakang -Tamatkan interaksi selepas log masuk Terdapat dua jenis Kaedah, satu berdasarkan storan sesi, dan satu lagi berdasarkan storan redis. Artikel ini hanya membincangkan pemprosesan maklumat pengguna berdasarkan redis.
Untuk setiap interaksi maklumat selepas pengguna log masuk, jika maklumat pengguna perlu dihantar, terutamanya ID pengguna, dsb., adalah tidak bijak untuk menanyakan pangkalan data setiap kali Kami boleh Cipta ruang dalam redis untuk menyimpan maklumat pengguna, dan kemudian kami akan menggunakannya daripada redis setiap kali kami memerlukan maklumat pengguna.
Mula-mula buat RedisUtil
//注銷 @RequestMapping("/logout") public String logout(){ redisTemplate.opsForHash().delete("token","user"); return "/login"; }
Selepas mencipta RedisUtil, simpan nilai dalam redis Pada masa ini, perlu diingatkan bahawa kunci kami perlu dibincangkan dengan bahagian hadapan terlebih dahulu, yang nama medan untuk digunakan, dan hujung semasa Apabila meminta, kunci mesti dihantar dalam pengepala Nilai disulitkan dan dikembalikan ke hujung hadapan selepas log masuk pertama, kami perlu menyahsulit nilai pertama dan gunakan nilai sebagai kunci untuk mendapatkan maklumat pengguna.
@Component public class RedisUtil { @Autowired private RedisTemplate redisTemplate; //key-value是對(duì)象的 //判斷是否存在key public boolean hasKey(String key) { return redisTemplate.hasKey(key); } //從redis中獲取值 public Object get(String key) { return redisTemplate.opsForValue().get(key); } //向redis插入值 public boolean set(final String key, Object value) { boolean result = false; try { redisTemplate.opsForValue().set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } //向redis插入值帶過(guò)期時(shí)間 單位:分鐘 public boolean set(final String key, Object value, long time) { boolean result = false; try { redisTemplate.opsForValue().set(key, value, time, TimeUnit.MINUTES); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } //redis刪除值 public boolean del(final String key) { return redisTemplate.delete(key); } //批量刪除某個(gè)字段開(kāi)始的key public long batchDel(String key) { Set<String> set = redisTemplate.keys(key + "*"); return redisTemplate.delete(set); } }
Apabila kita memerlukannya
@Component public class UserUtil { @Autowired private RedisUtil redisUtil; @Autowired private HttpServletRequest request; /** * 后臺(tái)管理的登錄id * * @return */ public JsonResult getUser() { String header = request.getHeader("#與前端約定的統(tǒng)一字段#"); //解密 String decrypt = DESUtil.decrypt(header); if (!redisUtil.hasKey(decrypt))return JsonResult.error("未登錄"); User user = null; try { user = (User) redisUtil.get(decrypt); } catch (Exception e) { e.printStackTrace(); } if (decrypt == null) return JsonResult.error("權(quán)限不足"); return JsonResult.success(user); } }
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah menyimpan token pengguna dalam Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pakej lanjutan Laravel yang penting untuk 2024 termasuk: 1 Laraveldebrugbar, yang digunakan untuk memantau dan debug kod; 2. Laraveltelescope, menyediakan pemantauan aplikasi terperinci; 3. Laravelhorizon, menguruskan tugas -tugas redis. Pek pengembangan ini dapat meningkatkan kecekapan pembangunan dan prestasi aplikasi.

Langkah -langkah untuk membina persekitaran Laravel pada sistem operasi yang berbeza adalah seperti berikut: 1.Windows: Gunakan XAMPP untuk memasang PHP dan komposer, konfigurasikan pembolehubah persekitaran, dan pasang Laravel. 2.MAC: Gunakan homebrew untuk memasang PHP dan komposer dan pasang Laravel. 3.Linux: Gunakan Ubuntu untuk mengemas kini sistem, pasang PHP dan komposer, dan pasang Laravel. Perintah dan laluan khusus setiap sistem adalah berbeza, tetapi langkah -langkah teras adalah konsisten untuk memastikan pembinaan lancar persekitaran pembangunan Laravel.

Redis lebih tinggi daripada pangkalan data tradisional dalam senario latency yang tinggi dan rendah, tetapi tidak sesuai untuk pertanyaan kompleks dan pemprosesan transaksi. 1.Redis menggunakan penyimpanan memori, bacaan cepat dan tulis kelajuan, sesuai untuk kesesuaian tinggi dan keperluan latensi yang rendah. 2. Pangkalan data tradisional didasarkan pada cakera, sokongan pertanyaan kompleks dan pemprosesan transaksi, dan mempunyai konsistensi dan ketekunan data yang kuat. 3. Redis sesuai sebagai suplemen atau pengganti pangkalan data tradisional, tetapi ia perlu dipilih mengikut keperluan perniagaan tertentu.

Sistem Linux mengehadkan sumber pengguna melalui perintah ULIMIT untuk mengelakkan penggunaan sumber yang berlebihan. 1.Ulimit adalah arahan shell terbina dalam yang boleh mengehadkan bilangan deskriptor fail (-N), saiz memori (-V), kiraan thread (-u), dan lain-lain, yang dibahagikan kepada had lembut (nilai berkesan semasa) dan had keras (had atas maksimum). 2. Gunakan perintah ULIMIT secara langsung untuk pengubahsuaian sementara, seperti ULIMIT-N2048, tetapi hanya sah untuk sesi semasa. 3. Untuk kesan tetap, anda perlu mengubah suai /etc/security/limits.conf dan fail konfigurasi PAM, dan tambah sessionrequiredpam_limits.so. 4. Perkhidmatan SystemD perlu menetapkan LIM dalam fail unit

Redis terutamanya pangkalan data, tetapi ia lebih daripada sekadar pangkalan data. 1. Sebagai pangkalan data, Redis menyokong kegigihan dan sesuai untuk keperluan berprestasi tinggi. 2. Sebagai cache, Redis meningkatkan kelajuan tindak balas aplikasi. 3. Sebagai broker mesej, REDIS menyokong mod penerbitan-langganan, sesuai untuk komunikasi masa nyata.

Redis melampaui pangkalan data SQL kerana prestasi dan fleksibiliti yang tinggi. 1) Redis mencapai bacaan dan tulis kelajuan yang sangat cepat melalui penyimpanan memori. 2) Ia menyokong pelbagai struktur data, seperti senarai dan koleksi, sesuai untuk pemprosesan data yang kompleks. 3) Model tunggal-threaded memudahkan pembangunan, tetapi konkurensi tinggi mungkin menjadi kesesakan.

Langkah -langkah untuk membina laman web PHP yang dinamik menggunakan PHPStudy termasuk: 1. Pasang PHPStudy dan mulakan perkhidmatan; 2. Konfigurasi Direktori Root Laman Web dan Sambungan Pangkalan Data; 3. Tulis skrip PHP untuk menghasilkan kandungan dinamik; 4. Debug dan mengoptimumkan prestasi laman web. Melalui langkah -langkah ini, anda boleh membina laman web PHP dinamik yang berfungsi sepenuhnya dari awal.

Redisisanopen-Source, In-MenoryDataStructureStoreusedasadatabase, Cache, andMessageBroker, ExcellingInspeedandversatility.Iswidelyededforcaching, Real-Timeanalytics, sessionManagement, danSleaderboardsDuetoitssupportorvariousdatastructures
