1. 程式人生 > >session 控制單點登入

session 控制單點登入

在我登入成功之後,我會

session.setAttribute("user", userMap);//設定session

所以就寫了一個監聽器來控制登入的。

package org.system.utils;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class OnlineUserListener implements HttpSessionAttributeListener { private final static ConcurrentHashMap<Integer, HttpSession> onlineMap = new ConcurrentHashMap<>(); @Override public void attributeAdded(HttpSessionBindingEvent event) { /* 獲取session裡面的使用者資訊
*/ @SuppressWarnings("unchecked") Map<String, Object> userMap = (Map<String, Object>) event.getSession().getAttribute("user"); int userId = (int) userMap.get("id"); if (onlineMap.containsKey(userId)) { onlineMap.get(userId).invalidate(); } onlineMap.put(userId, event.getSession()); HttpSessionAttributeListener.
super.attributeAdded(event); } }

在web.xml裡配置監聽器

 <listener>
        <listener-class>org.system.utils.OnlineUserListener</listener-class>
    </listener> 

相關推薦

session 控制登入

在我登入成功之後,我會 session.setAttribute("user", userMap);//設定session 所以就寫了一個監聽器來控制登入的。 package org.system.utils; import java.util.Map; import java.ut

如何通過session控制登入

  web伺服器為每一個瀏覽器例項對應一個session。 這個session有自己的一個獨立id,這個id儲存在瀏覽器的cookie中(這個cookie貌似隨著這個瀏覽器例項的關閉而清除), 訪問web伺服器的時候,web服務會根據你cookie中的sessionId來決

如何通過session控制登入----轉

上面已經提到了,需要通過控制session,對web服務中所有session進行遍歷操作,那麼你肯定會想到application這個大物件了(當然你也可以採用快取或者資料庫),具體實現方法是這樣的,首先在application中建立一個List<HttpSession>,用來儲存每一次會話(ses

shiro整合redis實現分散式session登入

shiro是一款出色的許可權框架,能夠實現諸如登入校驗、許可權校驗等功能,預設情況下,shir將session儲存到記憶體中,這在應用分散式部署的情況下會出現session不一致的問題,所以我們要將session儲存到第三方,應用始終從第三方獲取session,從而保證分散式

spring session 實現登入

1、   到了這裡,spring-session 配置已經基本完成。下面我們在controller中對使用者登入進行驗證,並且在使用者session資訊不存在的時候,將使用者資訊儲存進session中,關鍵程式碼如下: @RequestMapping("/loginAuth")  

登入 使用redis模擬session實現登入

redis就是一個公共的伺服器,所有的子系統都能連線redis進行訪問 1. 登入 在登入模組實現使用者名稱密碼的校驗之後,通過u

登入的解決方案(Session)

以前,做過的專案中有單點登入的模組,以前做的模組沒仔細觀察,檢視資料發現單點登入的解決方案還挺多!以下就記錄單點的不同解決方案;  http協議的特性 無狀態的,就是使用者連線只要獲取響應,伺服器不記錄使用者狀態,就算使用者訪問100次,伺服器也不知道使用者具體資訊; &nbs

Springboot 使用Redis+Session實現Session共享 , 實現登入

話說在前:   在你開啟我的這篇東西的時候,你應該學會了基於springboot專案使用Redis了,因為我不會在這篇過多去介紹·從redis基本配置。 然後, 你如果登入這模組,使用了shiro 或者說是 security ,沒關係的。 我也是結合shiro一起使用的。

SpringBoot+SpringSession+Redis實現session共享及登入

最近在學習springboot,session這個點一直困擾了我好久,今天把這些天踩的坑分享出來吧,希望能幫助更多的人。 一、pom.xml配置  <dependency> <groupId>org.springframework.boot

Session跨域及登入解決方案

cookie機制 關於cookie和seesion的聯絡 cookie中會包含那些資訊 名字,值,過期時間,路徑,域 cookie會帶到http請求頭中傳送給服務端 如果cookie沒有設定過期時間的話,那麼cookie的預設生命週期是瀏覽器的會話 sessi

使用spring-session、redeis實現跨二級域名登入

提示:目前瞭解到的,此方式只能實現父級域名一致的子域名間單點登入,如使用者登入了a.xx.com,再訪問b.xx.com/xxx.do,則不需要再登入。 單點登入(個人理解,如有不足,請補充):由多個服務組成的一組服務,登入其中一個服務後,訪問其他服務的受限資源,不再需要登

sso登入系統(解決session共享)

場景:假設一個使用者將自己的登入資訊提交到後臺,如果session儲存的資訊分佈在多臺機器上,並且不共享,那麼可能導致使用者的登入資訊出現短暫的丟失,為什麼這樣講,因為使用者訪問伺服器中間還要經過負載均衡伺服器,負載均衡採用輪詢的方式轉發使用者的登入請求。有可能訪問到的那臺

登入實現(spring session+redis完成session共享

v一、前言   專案中用到的SSO,使用開源框架cas做的。簡單的瞭解了一下cas,並學習了一下 ,有興趣的同學也可以學習一下,寫個demo玩一玩。 v二、工程結構      我模擬了 sso的客戶端和sso的服務端, sso-core中主要是一些sso需要的過濾器和工具類

Spring boot + shiro + redis 實現session共享(偽登入

    為實現Web應用的分散式叢集部署,要解決登入session的統一。本文利用shiro做許可權控制,redis做session儲存,結合spring boot快速配置實現session共享。注意本文未解決跨域的問題。不過對於一般的情況能夠很好的起到作用,具體已經在不同埠

thinkphp 二級域名站點 session共享(登入

每個二級域名站點入口檔案 index.php 中加入以下程式碼  define('DOMAIN','cdfanfan.com'); ///  cdfanfan.com 改為實際  根域名 //以下

OAuth2.0 原理流程及其登入和許可權控制

單點登入是多域名企業站點流行的登入方式。本文以現實生活場景輔助理解,力爭徹底理清 OAuth2.0 實現單點登入的原理流程。同時總結了許可權控制的實現方案,及其在微服務架構中的應用。 作者:王克鋒 出處:https://kefeng.wang/2018/

用Redis實現Session功能,實現登入

0.什麼是Redis Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API ---維基百科 1.與其他使用者狀態儲存方案比較 一般開發中使用者狀態使用session或者cookie

使用session儲存使用者登入狀態(實現登入

由於是軟體公司,專案使用者量很小,而且是傳統專案,所以用session來儲存使用者的登入狀態。前端是移動端,我為session物件寫了一個工具類,供自己用,記錄一下,說不定以後還會用到。 先上session工具的程式碼: package com.xxxx.utils;

Spring Session+Redis零侵入實現登入

Spring Session 實現單點登入 此種方式相對於上節所說使用原生(Jedis+Jackson+Cookie+Filter)的方式實現起來更加簡便,同時對業務程式碼的侵入性也十分之小,其原理與原生方式類似,並通過對HttpServletRequest和HttpSer

freamwork2實現登入,跨系統獲取session資訊

    redissession.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"    xmlns: