java shiro實現(xiàn)退出登陸清空緩存
上一篇介紹了使用springmvc集成shiro登陸過程,通過FormAuthenticationFilter過濾器獲取到用戶輸入的賬號密碼。
shiro是一個被廣泛使用的安全層框架,通過xml配置方式與spring無縫對接,用戶的登陸/退出/權(quán)限控制/Cookie等管理系統(tǒng)基礎(chǔ)功能交給shiro來管理。
一般,在JavaWEB管理平臺系統(tǒng)時,用戶退出系統(tǒng)之前沒需要清除用戶數(shù)據(jù)和關(guān)閉連接,防止垃圾數(shù)據(jù)堆積,shiro提供了LogoutFilter過濾器,我們可以繼承LogoutFilter,重寫preHandle方法,實現(xiàn)清除緩存功能。
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>
當調(diào)用的路徑匹配到/b/logout,會進入到SystemLogoutFilter過濾器,SystemLogoutFilter繼承了LogoutFilter,并重寫了preHandle方法,在preHandle方法執(zhí)行需要清空的數(shù)據(jù)。
@Service public class SystemLogoutFilter extends LogoutFilter { @Override protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { //在這里執(zhí)行退出系統(tǒng)前需要清空的數(shù)據(jù) Subject subject = getSubject(request, response); String redirectUrl = getRedirectUrl(request, response, subject); try { subject.logout(); } catch (SessionException ise) { ise.printStackTrace(); } issueRedirect(request, response, redirectUrl); //返回false表示不執(zhí)行后續(xù)的過濾器,直接返回跳轉(zhuǎn)到登錄頁面 return false; } }
注意,需要通過@Service注解,使用spring容器來管理,在spring-shiro.xml中配置shiro過濾器直接使用
<entry key="logout" value-ref="systemLogoutFilter" />
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
cookie+mybatis+servlet實現(xiàn)免登錄時長兩天半的整體流程
這篇文章主要介紹了cookie+mybatis+servlet實現(xiàn)免登錄時長兩天半,主要用到的技術(shù)有session、cookie、轉(zhuǎn)發(fā)、重定向、filter、和servlet,最重要的還是具體的來運用它們在前端頁面真正的搭建出一個應用,通過這個練習,對我們所學的web知識做一個整合,需要的朋友可以參考下2022-10-10簡單了解Thymeleaf語法 數(shù)據(jù)延遲加載使用實例
這篇文章主要介紹了簡單了解Thymeleaf語法 數(shù)據(jù)延遲加載使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2010-05-05Java實現(xiàn)獲取客戶端真實IP方法小結(jié)
本文給大家匯總介紹了2種使用java實現(xiàn)獲取客戶端真實IP的方法,主要用于獲取使用了代理訪問的來訪者的IP,有需要的小伙伴可以參考下。2016-03-03