單點登入達到使用者多處登入,後者擠掉前者的效果實現

2021-10-11 19:08:13 字數 1285 閱讀 9154

前言

先來講講思路:

資料庫中增加乙個驗證字段,登入時呼叫乙個函式給該字段賦值,該函式負責將本次的登入函式中隨機生成的一串自定的內容與資料庫中驗證字段內容比較一下,如果兩者不一致,就用當前函式生成的內容替換驗證欄位的內容,並且還要生成乙個cookie(登入的使用者標識也可存成cookie以便後續的使用,我這裡用到了),便於後續驗證是否其他地有登入。當使用者做操作時呼叫乙個驗證函式,該函式負責將使用者登入時儲存的cookie值與資料庫驗證欄位的值進行比較,如果兩者不一致,就提示使用者該賬號已從別處登陸,請重新登陸,如是密碼洩露請及時修改, 並返回登入介面要求重新登入,該方法只考慮多處登入,不考慮其他非正常的情況,後者登入前者一定會被擠掉

下面是**:

///登入操作時的方法

//scode是運算元據庫的條件,我這裡是使用者的登入的賬號

public

string

checklogin

(string scode)

//while迴圈查詢當前生成的隨機數是否存在於資料庫中

while

(true)}

else

}//判斷是否一致資料庫中存在的驗證字段值是否與當前值一致,不一致則直接更新

if(sislogin != login_state)

//關閉資料庫連線

mydc.

close()

;//返回生成的隨機數,在登入完成跳轉之前存成cookie,以便後續驗證使用

return login_state;

}

上面這個方法就是放在使用者登入的方法裡的

下面則是登入完成之後使用者操作呼叫的驗證函式

///驗證是否已被其他地登陸

public

void

checkloginstate()

//關閉資料庫連線

mydc.

close()

;}

切記這個函式當使用者執行某個操作就得執行,否則無法驗證是否多地登入具體的實現方式還是得結合自己的實際情況去實現,我這裡只是把自己的實現方式及思路分享給各位

使用者登入 單點登入

首先是為啥要用單點登入的問題,單點登入也就是sso sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。1 任何系統都必須去登陸伺服器進行登入 2 伺服器就記住了登入狀態 3 其他系統訪問受保護資源,需要再次登入,跳轉到sso server登入的時候,伺服器告訴客戶端,已...

登入方案 使用者單點登入

在微服務專案中,由於使用者往往需要通過閘道器訪問多個微服務,如登入需要訪問使用者微服務,商品瀏覽需要訪問商品微服務,下單需要訪問訂單微服務,支付需要訪問支付微服務。但如何防止使用者操作其他使用者的資料,這就需要在各個微服務中增加授權認證。每個服務都要認證使用者的身份,身份認證成功後,需要識別使用者的...

單點登入 域使用者 常規登入 AD域

我是把csdn部落格當筆記使的,以前總結過不知道放在 了,好鬱悶。1 單點登入 1 啥是單點登入?使用者只需要登入一次就可以訪問所有相互信任的應用系統。single sign on,簡稱為 sso 2 解決啥問題?各個server拿到同乙個id,都能有辦法檢驗出id的有效性 並且能得到id對應的使用...