單點登入之限制同一賬號在多平台同時登入

2021-08-17 08:28:29 字數 4324 閱讀 6383

在很多web產品中都需要實現在同一時刻,只能允許乙個賬號同時只能在乙個瀏覽器當中登入。通俗點講就是當a賬號在瀏覽器1當中登入了,此時在瀏覽器2中登入a賬號。那麼在瀏覽器1中的a賬號將會被擠出去,當使用者操作瀏覽器1的頁面,頁面會跳到登入頁面,需要重新登入。那麼我們怎麼實現這樣的功能呢?下面將給大家進行詳細的介紹:

原理

使用者a使用賬號a在瀏覽器當中登入,然後使用者b在另外一台電腦上的瀏覽器登入賬號a,當使用者b登入驗證成功時,將會觸

發登入監聽類,在監聽類當中判斷出賬號a已經被使用者a登入,就把使用者a的賬號a 踢出去,此時當使用者a操作頁面,頁面就會跳轉到

登入頁面。

**實現

在實現過程中,用到loginlistenner監聽類、login登入方法以及在web.xml中配置監聽類

loginlistenner

當登入成功後,向session中放入登入成功的賬號物件loginuser,觸發loginlistenner中的attributeadded事件,在這個事件中,我們判斷存放賬號和session對應關係的map中是否有當前登入的賬號的session,如果有我們就把該session從map中移除,同時登出該session,然後把剛登入的賬號和session放入map。下面是**:

? 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

/**

*

* @classname: loginlistenner

* @description: 登入監聽類-處理同一時間只允許賬號,單地點登入

* @author mr_smile2014 [email protected]

* @date 2023年11月12日 下午2:23:41

* 當向session中移除資料觸發

登入方法

對賬號、密碼、驗證碼進行判斷和驗證,驗證通過後把對應的使用者物件放入到session中,**如下:

? 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

* 登入

*

* @param username

* @param password

* @param code

*            驗證碼

* @param type

*            登陸型別(商戶,操作員)

web.xml配置把loginlistenner監聽類,配置到web.xml檔案中,這樣對session的監聽才生效。配置如下:

? 1

2

3

4

com.test.listenner.loginlistenner

單點登入實現多地同一賬號踢出功能

單點登入,踢出實現,一碰到,感覺矇圈了。一哥們跟我講,如果同乙個賬號,在乙個地方登入之後,怎麼保證有其他地方登入就踢出這個的登入。一問之後,我的第一反映就是我們可以使用使用者id來進行控制啊,但反應過來才發現不是每乙個公司都會為使用者表建立使用者id的。所以然後那哥們給我提示了一下,他說用ip啊,瞬...

同乙個伺服器實現單點登入

一.單點登入的前提條件 要想實現此功能要有一組加密與驗證加密的金鑰.修改節點下的節點屬性,如下 code 1.validationkey為用於驗證加密資料的金鑰.最小長度為40個字元 20位元組 最大長度為128個字元 64位元組 2.decryptionkey為用於加密資料的金鑰.最小長度為16字...

同乙個伺服器實現單點登入

一.單點登入的前提條件 要想實現此功能要有一組加密與驗證加密的金鑰.修改節點下的節點屬性,如下 code machinekey validationkey 6e993a81cf4bdca1c1031528f55dadbb8af1772a validation sha1 decryptionkey 2...