您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關在java項目中利用shiro實現退出登陸并清空緩存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
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" />
看完上述內容,你們對在java項目中利用shiro實現退出登陸并清空緩存有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。