色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php利用session如何實現單ip登陸限制?

老白2年前15瀏覽0評論

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

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

這個很好理解,既然有登錄,那就離不開會話控制技術(Cookie+Session),當用戶成功登錄后,我們需要獲取到用戶的IP,同時標記會話狀態,這樣此用戶后續的請求都會歸屬于此會話中。

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

基于第一步,當用戶登錄成功后,就需要獲取用戶的真實IP,然后存儲起來。常見的存儲方式有:緩存文件、數據庫、文件。考慮到性能,我們建議可以將用戶的真實IP存儲到Redis這類NoSQL中。

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

第三步:每次登錄與登出都要更新對應的RedisKey對應的值

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

1、每次登錄成功后

每次登錄操作時,驗證用戶名及密碼正確后需要查看此用戶的UID對應的RedisValue值(如果Cookie+Session狀態都存在也需要判斷Redis中是否有值),如果Redis中有值,則代表此用戶之前登錄過,再進一步判斷用戶當前的IP是否和上次登錄的IP一致,如果不一致則代表用戶在多處登錄了,再根據業務做進一步處理。

2、登出操作

當用戶登出時,同樣需要對Redis中的記錄做同步刪除操作。