opencart登陸,magento504
2022-10-13 10:15:10 - 米境通
1、常見單機(jī)和分布式應(yīng)用下登錄校驗(yàn)
單機(jī)tomcat應(yīng)?用登錄檢驗(yàn)
sesssion保存在瀏覽?和應(yīng)用服務(wù)?會(huì)話之間。
用戶登錄成功,服務(wù)端會(huì)保存一個(gè)session,服務(wù)器會(huì)給客戶端分發(fā)一個(gè)sessionID作為標(biāo)識(shí)。
客戶端會(huì)把sessionID保存在cookie中,每次請(qǐng)求都會(huì)攜帶這個(gè)sessionId。
分布式應(yīng)用中session共享
真實(shí)的應(yīng)用不可能單節(jié)點(diǎn)部署,所以就有個(gè)多節(jié)點(diǎn)登錄session共享的問(wèn)題需要解決。
tomcat支持session共享,但是有廣播風(fēng)暴;用戶量大的時(shí)候,占用資源嚴(yán)重,不推薦。
使用redis存儲(chǔ)token思路:
服務(wù)端使用UUID生成隨機(jī)64位或128位token,放入redis中,然后返回給客戶端并存儲(chǔ)在cookie中。
用戶每次訪問(wèn)都攜帶此token,服務(wù)端去redis中校驗(yàn)是否有此用戶即可。
分布式應(yīng)用中使用JWT解決方案
優(yōu)點(diǎn)
生產(chǎn)的token可以包含基本信息,比如id、用戶昵稱、頭像等信息,避免再次查庫(kù)。
存儲(chǔ)在客戶端,不占用服務(wù)端的內(nèi)存資源。
缺點(diǎn)
token是經(jīng)過(guò)base64編碼,所以可以解碼,因此token加密前的對(duì)象不應(yīng)該包含?感信息,如用戶權(quán)限,密碼等。
如果沒(méi)有服務(wù)端存儲(chǔ),則不能做登錄失效處理,除非服務(wù)端改密鑰。
對(duì)于JSONWebToken(JWT)基本概念,可以參考我以前的一篇文章,在此不過(guò)多贅述
密碼加密與微服務(wù)鑒權(quán)JWT
相關(guān)問(wèn)答: