shiro退出登陸清空快取實現
上一篇介紹了使用springmvc整合shiro登陸過程(http://www.cnblogs.com/nosqlcoco/p/5579081.html),通過FormAuthenticationFilter過濾器獲取到使用者輸入的賬號密碼。
shiro是一個被廣泛使用的安全層框架,通過xml配置方式與spring無縫對接,使用者的登陸/退出/許可權控制/Cookie等管理系統基礎功能交給shiro來管理。
一般,在JavaWEB管理平臺系統時,使用者退出系統之前沒需要清除使用者資料和關閉連線,防止垃圾資料堆積,shiro提供了LogoutFilter過濾器,我們可以繼承LogoutFilter,重寫preHandle方法,實現清除快取功能。
spring-shiro.xml:
<!-- 安全認證過濾器 --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/b/login" /> <property name="successUrl" value="/b" /> <property name="filters"> <map> <!--退出過濾器--> <entry key="logout" value-ref="systemLogoutFilter" /> </map> </property> <property name="filterChainDefinitions"> <value> /b/login = authc /b/logout = logout /b/** = user </value> </property> </bean>
當呼叫的路徑匹配到/b/logout,會進入到SystemLogoutFilter過濾器,SystemLogoutFilter繼承了LogoutFilter,並重寫了preHandle方法,在preHandle方法執行需要清空的資料。
@Service public class SystemLogoutFilter extends LogoutFilter { @Override protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { //在這裡執行退出系統前需要清空的資料
Subject subject = getSubject(request, response);
String redirectUrl = getRedirectUrl(request, response, subject);
try {
subject.logout();
} catch (SessionException ise) {
ise.printStackTrace();
}
issueRedirect(request, response, redirectUrl);
//返回false表示不執行後續的過濾器,直接返回跳轉到登入頁面
return false;
}
}
注意,需要通過@Service註解,使用spring容器來管理,在spring-shiro.xml中配置shiro過濾器直接使用
<entry key="logout" value-ref="systemLogoutFilter" />
轉載自:http://www.cnblogs.com/nosqlcoco/p/5587294.html
相關推薦
分享知識-快樂自己:Shiro 退出登陸清空快取實現
shiro是一個被廣泛使用的安全層框架,通過xml配置方式與spring無縫對接,使用者的登陸/退出/許可權控制/Cookie等管理系統基礎功能交給shiro來管理。 一般,在JavaWEB管理平臺系統時,使用者退出系統之前沒需要清除使用者資料和關閉連線,防止垃圾資料堆積,shiro提供了LogoutFil
shiro退出登陸清空快取實現
上一篇介紹了使用springmvc整合shiro登陸過程(http://www.cnblogs.com/nosqlcoco/p/5579081.html),通過FormAuthenticationFilter過濾器獲取到使用者輸入的賬號密碼。 shiro是一個被
分享知識-快樂自己:Shiro 退出登陸清空緩存實現
spa xtend hub use and size ESS direct 執行 shiro是一個被廣泛使用的安全層框架,通過xml配置方式與spring無縫對接,用戶的登陸/退出/權限控制/Cookie等管理系統基礎功能交給shiro來管理。 一般,在JavaWEB管理
Android開發:計算快取大小並且清空快取
專案中碰到了計算快取大小和清空快取的功能,這個很常見的功能,幾乎每個APP都有,以為實現很簡單,網上搜了一大堆,發現都不是符合我需要的,而且經常刪除的沒有效果,於是又另外找了一些資料,折騰了蠻久,終於完成了 以下的這個類的功能很簡單,計算你的快取總大小,不管內部快取還是外部快取,和清空快取,包括
Android WebView清空快取
Android原生和H5混合開發,要求使用者退出登入後清空H5所有的快取; 1、清空Cookie CookieSyncManager.createInstance(context.getApplicationContext()); CookieManager
IE/Firefox每次重新整理時自動檢查網頁更新,無需手動清空快取的設定方法(轉)
1.在firefox的位址列上輸入about:config回車 2.找到browser.cache.check_doc_frequency選項,雙擊將3改成1儲存即可。 那麼這個選項每個值都是什麼含義的。請看下面的解釋: 0: Once per session 每個程序一次 每次啟動Fire
redis如何清空快取
前言: 如果你們的專案用到redis啦,雖然設定了過期時間,但有時候修改bug,仍然需要及時清空快取,去讀資料庫的資料,所以這篇文章講解如何在linux下清除redis的快取。 正文: 1.首先進到redis的安裝目錄,進到src目錄下,找到redis-cli 2.首先用賬號密
移動開發----計算快取大小並且清空快取
以下的這個類的功能很簡單,計算你的快取總大小,不管內部快取還是外部快取,和清空快取,包括內部和外部的快取一起清空,請本人親測,效果槓槓的。 public class DataCleanManager { public static String getTotalC
微信瀏覽器清空快取(網頁開發)
微信瀏覽器自帶的瀏覽器快取真心煩,老是有快取,因為開發網頁的需要這裡我在網上找到一個清除快取的方法,親測可用,隨便找一個對話方塊,輸入網址“debugx2.qq.com”,點選訊息中的網址,進入x5除錯頁面,把頁面拉到最底
C++使用string.getline()和cin混合輸入的問題(cin清空快取)
要從控制檯輸入一行字串(可能含空格)的時候,一般常用兩個getline,一個是string裡的,一個是cin裡的 string的getline(cin, str)直接把輸入存到string物件中,更為方便(cin的getline接受的是*char) 若要求先輸入一行(
c--getchar() 清空快取
getchar() 該函式的原型為: # include <stdio.h> int getchar(void); 功能是從緩衝區中讀取一個字元。這個函式非常簡單,連引數都沒有,非常好用。下面用 scanf 給字元變數賦值和吸收回車的程式用 getchar() 修改一下:
response.setHeader強制清空快取和強制過期
response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); respons
【Hibernate學習筆記】Session清空快取與清理快取
1. 清空快取 當呼叫session.evict(customer); 或者session.clear(); 或者session.close()方法時,Session的快取被清空。 2. 清理快取 Session具有一個快取,位於快取中的物件處於持久化狀態
session清理快取的理解和如何清空快取中的資料
尊重版權:http://blog.sina.com.cn/s/blog_62a151be0100nf28.html Session執行一些sql語句把記憶體中的物件的狀態同步到資料庫,這個過程被稱為session清理. 在預設情況下,Session會在下面的時間點清理
ionic專案登出時清空快取資訊
cordova+ionic專案,測試的時候遇到了這麼個問題,當我登出後再重新登入的時候(不關閉APP),頁面中依然儲存著快取資訊,例如:超連結點選後改變的樣式登出後再登入依然存在,如果只是樣式出錯那還只是小問題,畢竟不影響功能。可惜,這不僅會影響樣式,它還會導致你的導航,ta
【JAVA學習】session 清理快取的理解 和 如何 清空快取中的資料
尊重版權:http://blog.sina.com.cn/s/blog_62a151be0100nf28.html Session執行一些sql語句把記憶體中的物件的狀態同步到資料庫,這個過程被稱為session清理. 在預設情況下,Session會在下面的時間點清理
退出,清空cookie
//退出 //控制從哪個頁面跳過來的 if (Request.UrlReferrer != null) urlrefer = Request.UrlReferrer.ToString() + ""
C語言之清空快取區
在C語言中,我們常常需要去清空快取區,對於快取區清空的重要性,接下來我們進行具體的說明。 首先我們先解釋一下快取區。 1.快取區 C語言中的緩衝區又稱為快取,它是記憶體空間的一部分。 也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來
memcached和redis中清空快取
memcached: 命令列使用 flush_all 將所有的資料都設定為過期,但記憶體空間不釋放 redis: 命令列使用 (1) flush all 刪除所有資料庫的所有key (2) flushdb 刪除當前庫或所選庫的所有key
Thinkphp5-Cache::clear()清空快取在的問題解決
TP5使用檔案快取使用 Cache::clear(); 在Linux系統上面清除所有快取時 存在的問題(window下用這個呼叫沒有問題)在檔案\thinkphp\library\think\cach