使用Shiro實現(xiàn)登錄成功后跳轉(zhuǎn)到之前的頁面
這個問題是之前在做登錄注冊模塊時遇到的需求,如何用戶直接訪問登錄頁面,可以控制直接跳到首頁,但是如果是用戶沒有登錄直接訪問了購物車等需要經(jīng)過身份認(rèn)證的頁面,或者是因為session超時,用戶需要重新登錄,那么這時跳回之前的頁面就是提升用戶體驗的事情。實現(xiàn)此功能比較好的方法是用ajax的方式登陸,這樣直接在當(dāng)前頁面彈窗讓用戶登錄既可,二是把用戶未登錄前的url存在session中,login成功之后先檢查session中是否存在這樣的一個url。下面通過一段代碼給大家分享下:
項目中集成了shiro,里面就有這么個功能,防止WebUtils工具類里面。
廢話了這么多,其實網(wǎng)上也有人寫過這么一篇關(guān)于這個功能實現(xiàn)的的博文,這個大神寫的shiro教程也是蠻值得一看的,只不過我在使用
SavedRequest savedRequest = WebUtils.getSavedRequest(request);的時候,savedRequest 對象一直為空,囧了一段時間,后面再群里遇到高人指點,發(fā)現(xiàn)是自己的配置文件沒寫好,即shiroFilter中的filterChainDefinitions,所需要攔截的url沒有寫完全,像下面這段配置
<!-- Shiro的Web過濾器 -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="/cooka-user-web/login" />
<property name="unauthorizedUrl" value="/unauthorized " />
<property name="filters">
<util:map>
<entry key="authc">
<bean
class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter" />
</entry>
</util:map>
</property>
<property name="filterChainDefinitions">
<value>
# 無需認(rèn)證便可以訪問的的文件放在前面
/js/* = anon
/css/* = anon
/img/* = anon
/images/* = anon
/user-web/login = anon
/logout = logout
/user-web/* = authc
/backend-web/* = authc
</value>
</property>
</bean>
只有/user-web/* (除去login,這里url的匹配使用短路機制,即最先匹配原則)和/backend-web/ 后面的url,才會被允許存入到session中,這樣,當(dāng)用戶沒有登陸就去訪問包含以上兩種鏈接前綴的時候,登陸成功后就會跳轉(zhuǎn)到之前的界面了。
以上內(nèi)容就是本文全部介紹,希望能夠幫助到大家
相關(guān)文章
解決日期轉(zhuǎn)化Json異常- Date JSON parse error
這篇文章主要介紹了解決日期轉(zhuǎn)化Json異常- Date JSON parse error問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
Spring 數(shù)據(jù)庫連接池(JDBC)詳解
本篇文章主要介紹了基于Spring的JDBC基本框架搭建;基于Spring的JDBC增刪改查;讀取配置文件中的數(shù)據(jù)等,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05
Java語言中flush()函數(shù)作用及使用方法詳解
這篇文章主要介紹了Java語言中flush函數(shù)作用及使用方法詳解,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Ubuntu安裝jenkins完成自動化構(gòu)建詳細步驟
Jenkins是一個開源的自動化服務(wù)器,可以用來輕松地建立持續(xù)集成和持續(xù)交付(CI/CD)管道,這篇文章主要給大家介紹了關(guān)于Ubuntu安裝jenkins完成自動化構(gòu)建的相關(guān)資料,需要的朋友可以參考下2024-03-03
Java中CyclicBarrier和CountDownLatch的用法與區(qū)別
CyclicBarrier和CountDownLatch這兩個工具都是在java.util.concurrent包下,并且平時很多場景都會使用到。本文將會對兩者進行分析,記錄他們的用法和區(qū)別,感興趣的可以了解一下2021-08-08



