


Bagaimana untuk menyelesaikan masalah menyimpan token pengguna dalam Redis
Redis 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
//生成一个token对象,保存在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; }
//发送ajax请求,获取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是对象的 //判断是否存在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插入值带过期时间 单位:分钟 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); } //批量删除某个字段开始的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; /** * 后台管理的登录id * * @return */ public JsonResult getUser() { String header = request.getHeader("#与前端约定的统一字段#"); //解密 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("权限不足"); 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.

Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

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)

Untuk merealisasikan pembetulan ralat teks dan pengoptimuman sintaks dengan AI, anda perlu mengikuti langkah -langkah berikut: 1. Pilih model AI atau API yang sesuai, seperti Baidu, Tencent API atau perpustakaan NLP sumber terbuka; 2. Panggil API melalui curl atau Guzzle PHP dan memproses hasil pulangan; 3. Maklumat pembetulan ralat paparan dalam aplikasi dan membenarkan pengguna memilih sama ada untuk mengadopsinya; 4. Gunakan php-l dan php_codesniffer untuk pengesanan sintaks dan pengoptimuman kod; 5. Secara berterusan mengumpul maklum balas dan mengemas kini model atau peraturan untuk meningkatkan kesannya. Apabila memilih AIAPI, fokus pada menilai ketepatan, kelajuan tindak balas, harga dan sokongan untuk PHP. Pengoptimuman kod harus mengikuti spesifikasi PSR, gunakan cache yang munasabah, elakkan pertanyaan bulat, mengkaji semula kod secara berkala, dan gunakan x

1. 2. Prestasi tinggi memerlukan pergantungan pada cache (redis), pengoptimuman pangkalan data, CDN dan giliran tak segerak; 3. Keselamatan mesti dilakukan dengan penapisan input, perlindungan CSRF, HTTPS, penyulitan kata laluan dan kawalan kebenaran; 4. Pengiklanan pilihan wang, langganan ahli, ganjaran, komisen, pembayaran pengetahuan dan model lain, terasnya adalah untuk memadankan nada komuniti dan keperluan pengguna.

PHP memastikan pemotongan inventori atomik melalui urus niaga pangkalan data dan kunci baris forupdate untuk mengelakkan overselling serentak yang tinggi; 2. Konsistensi inventori pelbagai platform bergantung kepada pengurusan berpusat dan penyegerakan yang didorong oleh peristiwa, menggabungkan pemberitahuan API/webhook dan beratur mesej untuk memastikan penghantaran data yang boleh dipercayai; 3. Mekanisme penggera harus menetapkan inventori rendah, sifar/inventori negatif, jualan yang tidak dapat dilepaskan, kitaran penambahan dan strategi turun naik yang tidak normal dalam senario yang berbeza, dan pilih DingTalk, SMS atau orang yang bertanggungjawab e -mel mengikut urgensi, dan maklumat penggera mesti lengkap dan jelas untuk mencapai penyesuaian perniagaan dan tindak balas yang cepat.

PHP tidak secara langsung melaksanakan pemprosesan imej AI, tetapi mengintegrasikan melalui API, kerana ia adalah baik pada pembangunan web dan bukannya tugas-tugas intensif pengkomputeran. Integrasi API boleh mencapai pembahagian profesional buruh, mengurangkan kos, dan meningkatkan kecekapan; 2. Mengintegrasikan teknologi utama termasuk menggunakan Guzzle atau Curl untuk menghantar permintaan HTTP, pengekodan data JSON dan penyahkodan, pengesahan keselamatan utama API, pemprosesan giliran yang memakan masa yang memakan masa, pengendalian ralat yang teguh dan mekanisme semula, penyimpanan imej dan paparan; 3. Cabaran umum termasuk kos API daripada kawalan, hasil generasi yang tidak terkawal, pengalaman pengguna yang lemah, risiko keselamatan dan pengurusan data yang sukar. Strategi tindak balas menetapkan kuota dan cache pengguna, menyediakan panduan propt dan pemilihan multi-gambar, pemberitahuan asynchronous dan kemajuan kemajuan, penyimpanan pembolehubah persekitaran utama dan audit kandungan, dan penyimpanan awan.

1. PHP terutamanya menjalankan pengumpulan data, komunikasi API, pemprosesan peraturan perniagaan, pengoptimuman cache dan paparan cadangan dalam sistem cadangan kandungan AI, dan bukan secara langsung melaksanakan latihan model kompleks; 2. Sistem ini mengumpul tingkah laku pengguna dan data kandungan melalui PHP, memanggil perkhidmatan AI back-end (seperti model Python) untuk mendapatkan hasil cadangan, dan menggunakan Redis Cache untuk meningkatkan prestasi; 3. Algoritma cadangan asas seperti penapisan kolaboratif atau persamaan kandungan boleh melaksanakan logik ringan dalam PHP, tetapi pengkomputeran besar-besaran masih bergantung kepada perkhidmatan AI profesional; 4. Pengoptimuman perlu memberi perhatian kepada masa nyata, permulaan sejuk, kepelbagaian dan maklum balas yang ditutup gelung, dan cabaran termasuk prestasi konkurensi tinggi, kestabilan kemas kini model, pematuhan data dan tafsiran cadangan. PHP perlu bekerjasama untuk membina maklumat yang stabil, pangkalan data dan front-end.

Membina persekitaran kontena tugas PHP yang bebas boleh dilaksanakan melalui Docker. Langkah -langkah khusus adalah seperti berikut: 1. Pasang Docker dan DockerCompose sebagai asas; 2. Buat direktori bebas untuk menyimpan fail Dockerfile dan Crontab; 3. Tulis Dockerfile untuk menentukan persekitaran PHPCLI dan memasang cron dan sambungan yang diperlukan; 4. Tulis fail crontab untuk menentukan tugas masa; 5. Tulis direktori script-compose.yml mount dan konfigurasikan pembolehubah persekitaran; 6. Mulakan bekas dan sahkan log. Berbanding dengan melaksanakan tugas masa dalam bekas web, bekas bebas mempunyai kelebihan pengasingan sumber, persekitaran murni, kestabilan yang kuat, dan pengembangan yang mudah. Untuk memastikan penangkapan dan penangkapan ralat

Pilih Perkhidmatan Pengiktirafan Suara AI yang sesuai dan mengintegrasikan PHPSDK; 2. Gunakan PHP untuk memanggil FFMPEG untuk menukar rakaman ke dalam format API yang diperlukan (seperti WAV); 3. Muat naik fail ke penyimpanan awan dan hubungi pengiktirafan tak segerak API; 4. Menganalisis hasil JSON dan menyusun teks menggunakan teknologi NLP; 5. Menjana dokumen Word atau Markdown untuk melengkapkan automasi rekod mesyuarat. Seluruh proses perlu memastikan penyulitan data, kawalan akses dan pematuhan untuk memastikan privasi dan keselamatan.

Pilih kaedah pembalakan: Pada peringkat awal, anda boleh menggunakan ralat terbina dalam () untuk php. Selepas projek diperluaskan, pastikan anda beralih ke perpustakaan yang matang seperti monolog, menyokong pelbagai pengendali dan tahap log, dan pastikan log mengandungi cap waktu, tahap, nombor talian fail dan butiran ralat; 2. Struktur Penyimpanan Reka Bentuk: Sebilangan kecil balak boleh disimpan dalam fail, dan jika terdapat sebilangan besar log, pilih pangkalan data jika terdapat sejumlah besar analisis. Gunakan MySQL/PostgreSQL ke data berstruktur. Elasticsearch Kibana disyorkan untuk separa berstruktur/tidak berstruktur. Pada masa yang sama, ia dirumuskan untuk sandaran dan strategi pembersihan tetap; 3. Antara muka Pembangunan dan Analisis: Ia sepatutnya mempunyai fungsi carian, penapisan, pengagregatan, dan visualisasi. Ia boleh diintegrasikan secara langsung ke Kibana, atau menggunakan Perpustakaan Carta Kerangka PHP untuk membangunkan pembangunan diri, yang memberi tumpuan kepada kesederhanaan dan kemudahan antara muka.
