激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - spring mvc實(shí)現(xiàn)登錄賬號(hào)單瀏覽器登錄

spring mvc實(shí)現(xiàn)登錄賬號(hào)單瀏覽器登錄

2020-09-16 15:31Mr_Smile2014 JAVA教程

這篇文章主要為大家詳細(xì)介紹了spring mvc實(shí)現(xiàn)登錄賬號(hào)單瀏覽器登錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在很多web產(chǎn)品中都需要實(shí)現(xiàn)在同一時(shí)刻,只能允許一個(gè)賬號(hào)同時(shí)只能在一個(gè)瀏覽器當(dāng)中登錄。通俗點(diǎn)講就是當(dāng)A賬號(hào)在瀏覽器1當(dāng)中登錄了,此時(shí)在瀏覽器2中登錄A賬號(hào)。那么在瀏覽器1中的A賬號(hào)將會(huì)被擠出去,當(dāng)用戶操作瀏覽器1的頁(yè)面,頁(yè)面會(huì)跳到登錄頁(yè)面,需要重新登錄。那么我們?cè)趺磳?shí)現(xiàn)這樣的功能呢?下面將給大家進(jìn)行詳細(xì)的介紹:

原理

用戶A使用賬號(hào)a在瀏覽器當(dāng)中登錄,然后用戶B在另外一臺(tái)電腦上的瀏覽器登錄賬號(hào)a,當(dāng)用戶B登錄驗(yàn)證成功時(shí),將會(huì)觸發(fā)登錄監(jiān)聽類,在監(jiān)聽類當(dāng)中判斷出賬號(hào)a已經(jīng)被用戶A登錄,就把用戶A的賬號(hào)a 踢出去,此時(shí)當(dāng)用戶A操作頁(yè)面,頁(yè)面就會(huì)跳轉(zhuǎn)到登錄頁(yè)面。

代碼實(shí)現(xiàn)

在實(shí)現(xiàn)過程中,用到LoginListenner監(jiān)聽類、login登錄方法以及在web.xml中配置監(jiān)聽類

LoginListenner

當(dāng)?shù)卿洺晒螅騭ession中放入登錄成功的賬號(hào)對(duì)象loginuser,觸發(fā)LoginListenner中的attributeAdded事件,在這個(gè)事件中,我們判斷存放賬號(hào)和session對(duì)應(yīng)關(guān)系的map中是否有當(dāng)前登錄的賬號(hào)的session,如果有我們就把該session從map中移除,同時(shí)注銷該session,然后把剛登錄的賬號(hào)和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: 登錄監(jiān)聽類-處理同一時(shí)間只允許賬號(hào),單地點(diǎn)登錄
 * @author mr_smile2014 605051929@qq.com
 * @date 2014年11月12日 下午2:23:41
 *
 */
public class LoginListenner implements HttpSessionAttributeListener {
 /**
 * 用于存放賬號(hào)和session對(duì)應(yīng)關(guān)系的map
 */
 private Map<String, HttpSession> map = new HashMap<String, HttpSession>();
 
 /**
 * 當(dāng)向session中放入數(shù)據(jù)觸發(fā)
 */
 public void attributeAdded(HttpSessionBindingEvent event) {
 String name = event.getName();
 
 if (name.equals("loginuser")) {
  User user = (User) event.getValue();
  if (map.get(user.getUserName()) != null) {
  HttpSession session = map.get(user.getUserName());
  session.removeAttribute(user.getUserName());
  session.invalidate();
  }
  map.put(user.getUserName(), event.getSession());
 }
 
 }
 /**
 * 當(dāng)向session中移除數(shù)據(jù)觸發(fā)
 */
 public void attributeRemoved(HttpSessionBindingEvent event) {
 String name = event.getName();
 
 if (name.equals("loginuser")) {
  User user = (User) event.getValue();
  map.remove(user.getUserName());
 
 }
 }
 
 public void attributeReplaced(HttpSessionBindingEvent event) {
 
 }
 
 public Map<String, HttpSession> getMap() {
 return map;
 }
 
 public void setMap(Map<String, HttpSession> map) {
 this.map = map;
 }
 
}

登錄方法

對(duì)賬號(hào)、密碼、驗(yàn)證碼進(jìn)行判斷和驗(yàn)證,驗(yàn)證通過后把對(duì)應(yīng)的用戶對(duì)象放入到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
 *  驗(yàn)證碼
 * @param type
 *  登陸類型(商戶,操作員)
 * @param model
 * @return
 */
 @RequestMapping("/login")
 public String login(String account, String passWord, String code,
  Model model, HttpServletRequest request) {
  //登錄驗(yàn)證并返回登錄成功用戶對(duì)象
  User user=loginResult(userPhone, passWord, code, request);
  //把用戶對(duì)象放入到session中,將會(huì)觸發(fā)LoginListenner中的attributeAdded事件
  request.getSession().setAttribute("loginuser", user);
  
  }

web.xml配置

把LoginListenner監(jiān)聽類,配置到web.xml文件中,這樣對(duì)session的監(jiān)聽才生效。配置如下:

?
1
2
3
4
<!--一個(gè)用戶只能在一個(gè)主機(jī)登錄 -->
 <listener>
 <listener-class>com.test.listenner.LoginListenner</listener-class>
</listener>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲性爰 | 国产免费黄网 | 久久久久亚洲a | 美女黄影院| 国产精品成人久久 | 一级成人免费 | 日本在线观看高清完整版 | 万圣街在线观看免费完整版 | 丰满年轻岳中文字幕一区二区 | 国产毛片自拍 | 黑人三级毛片 | av在线播放免费观看 | 免费在线看黄 | 国产一级免费电影 | 精品一区二区久久久久久按摩 | 黄网站色成年大片免费高 | 黄色免费视频在线 | 一级黄色毛片播放 | 欧美精品一区自拍a毛片在线视频 | 欧美一级毛片美99毛片 | 成人乱码一区二区三区不卡视频 | 国产精品99久久久久久宅女 | 久久在线免费视频 | 伊人午夜视频 | 羞羞视频一区二区 | 久久久www视频 | 国产黄色网页 | 中文字幕一区二区三区久久 | 黑人一区二区 | 中国3xxxx | 久久精品探花 | 成人男女啪啪免费观看网站四虎 | 一级电影在线免费观看 | 天天操很很操 | 一分钟免费观看完整版电影 | 久久久亚洲欧美综合 | 久久毛片免费观看 | 中国精品久久 | 国产精品久久久久久久久久尿 | 毛片免费视频播放 | 日韩在线黄色片 |