Idea semasa saya ialah untuk mentakrifkan User
对象,其中包括uid
, username
, password
, isLogined
等。然后设置一个拦截器,在用户第一次请求(session开始)的时候,从数据库中根据user.isLogined
判断用户是否登录,如果登录了就在session级别上设置isLogined
sama dengan benar, jika tidak, ia akan mengubah hala ke halaman log masuk.
Tetapi dalam kes ini, bagaimanakah saya harus menentukan identiti pengguna apabila pengguna membuat permintaan pertama? Jika uid
ditetapkan dalam kuki, uid ini boleh dipalsukan oleh orang lain, menimbulkan potensi risiko keselamatan.
Adakah penyelesaian yang baik untuk masalah ini?
Masalah utama saya ialah cara menilai kesahihan identiti log masuk pengguna Sekarang idea saya adalah untuk menyulitkan ID pengguna dan menyimpannya dalam kuki Hanya saya yang tahu kunci ini, jadi orang lain tidak boleh berbuat apa-apa walaupun mereka tahu ID pengguna saya ingin bertanya sama ada ini munasabah.
Risiko ini sangat besar: jika uid ditukar kepada orang lain, dan orang itu kebetulan dilog masuk, maka mereka akan dilog masuk sebagai orang lain
Ikuti rancangan anda:
1 Tetapkan uid kuki untuk disulitkan, atau rentetan rawak yang tidak bermakna
2 Gunakan rentetan ini untuk membandingkan dengan db, atau bandingkan dengan cache, dan sahkan IP pada masa yang sama Atau ejen pengguna untuk meningkatkan keselamatan
3, pertimbangkan dasar tamat tempoh sesi
Pertama sekali, anda perlu menyimpan maklumat pengguna dalam pangkalan data anda dan menyediakannya
isLogined
默认为FALSE
,每次登陆成功后更新为TRUE
,退出后更新为FALSE
;判断登陆成功的标志用userName userPass 匹配,还有isLogined
判断;最后设置判断级别,先isLogined
后用户密码
;Adalah disyorkan bahawa status log masuk tidak boleh disimpan dalam pangkalan data, sekurang-kurangnya tidak dalam pangkalan data hubungan anda boleh mengembalikan token selepas pengesahan log masuk pengguna selesai, dan semua permintaan pengguna seterusnya akan membawa token ini; medan kebenaran pengepala; Anda boleh belajar tentang jwt dan pelaksanaan yang berkaitan
Mengikut kaedah semasa anda, jika saya pengguna tanpa nama yang tidak log masuk dan meminta salah satu antara muka anda, dan kemudian dipintas daripada pangkalan data untuk menentukan sama ada pengguna log masuk berdasarkan pengguna.isLogined, maka masalah timbul . Siapakah pengguna dalam pengguna anda.isLogined?
Adalah disyorkan untuk meletakkan maklumat kejayaan log masuk pengguna dalam sesi selepas log masuk secara langsung Apabila meminta, hanya gunakan pemintas untuk mengesahkan sesi Jangan mengakses pangkalan data ini sangat mahal untuk setiap permintaan.