{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

php利用session如何實(shí)現(xiàn)單ip登陸限制?

jone5679jone5679 回答1 收藏1
收藏問題

1條回答

hqman

hqman

回答于2022-06-22 19:22

我們知道,Session和Cookie配合起來使用可用來實(shí)現(xiàn)會(huì)話跟蹤與控制。在一些場景下可能需要做單IP限制登錄,很多開發(fā)者可能就會(huì)想到用Session會(huì)話來實(shí)現(xiàn),但是不能多帶帶靠Session來實(shí)現(xiàn)單IP限制登錄。

第一步:單IP登錄限制需要基于會(huì)話控制

這個(gè)很好理解,既然有登錄,那就離不開會(huì)話控制技術(shù)(Cookie+Session),當(dāng)用戶成功登錄后,我們需要獲取到用戶的IP,同時(shí)標(biāo)記會(huì)話狀態(tài),這樣此用戶后續(xù)的請(qǐng)求都會(huì)歸屬于此會(huì)話中。

第二步:用戶登錄后要將用戶IP存儲(chǔ)起來

基于第一步,當(dāng)用戶登錄成功后,就需要獲取用戶的真實(shí)IP,然后存儲(chǔ)起來。常見的存儲(chǔ)方式有:緩存文件、數(shù)據(jù)庫、文件??紤]到性能,我們建議可以將用戶的真實(shí)IP存儲(chǔ)到Redis這類NoSQL中。

具體思路是:用戶登錄成功后 =》獲取用戶真實(shí)IP =》從數(shù)據(jù)庫中找到當(dāng)前登錄用戶的唯一ID值 =》將用戶唯一UID做為Redis的Key存儲(chǔ),其Value則為此用戶的IP。

第三步:每次登錄與登出都要更新對(duì)應(yīng)的Redis Key對(duì)應(yīng)的值

上面2步做好后,然后需要對(duì)登錄與登出邏輯做處理了,具體規(guī)則如下:

1、每次登錄成功后

每次登錄操作時(shí),驗(yàn)證用戶名及密碼正確后需要查看此用戶的UID對(duì)應(yīng)的Redis Value值(如果Cookie+Session狀態(tài)都存在也需要判斷Redis中是否有值),如果Redis中有值,則代表此用戶之前登錄過,再進(jìn)一步判斷用戶當(dāng)前的IP是否和上次登錄的IP一致,如果不一致則代表用戶在多處登錄了,再根據(jù)業(yè)務(wù)做進(jìn)一步處理。

2、登出操作

當(dāng)用戶登出時(shí),同樣需要對(duì)Redis中的記錄做同步刪除操作。

評(píng)論0 贊同0
  •  加載中...

相關(guān)問題

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<