日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断session失效,并跳转到登录页面

發(fā)布時(shí)間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断session失效,并跳转到登录页面 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

一,首先在登錄頁面加入以下代碼,作用是使用ifrme等加載頁面時(shí),跳轉(zhuǎn)登錄頁面會(huì)嵌套在框架內(nèi),讓登錄頁面全屏

<script language="JavaScript">if (window != top){top.location.href = location.href;} </script>

二,在web.xml中配置過濾器,過濾所有的action判斷session是否過期

<!-- session過濾器配置相關(guān) --> <filter><filter-name>SessionFilter</filter-name><filter-class>com.wonders.filter.SessionFilter</filter-class> </filter> <filter-mapping><filter-name>SessionFilter</filter-name><url-pattern>*.action</url-pattern><!--<dispatcher>FORWARD</dispatcher>--><!--在這種情況下,如果請(qǐng)求是以/contract/…或者/user/…開頭的,并且是通過request dispatcher的forward方法傳遞過來或者直接從客戶端傳遞過來的,則必須經(jīng)過這個(gè)過濾器。--><!--<dispatcher>REQUEST</dispatcher>--> </filter-mapping>

三,相關(guān)的過濾類

該類中主要判斷action是否是生成驗(yàn)證碼和跳轉(zhuǎn)到登錄頁面的類,如果是以上兩個(gè)類則不過濾,否則無法顯示登錄頁面和驗(yàn)證碼,除此以外的都可以過濾

import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.wonders.admin.model.User; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject;public class SessionFilter implements Filter {@Overridepublic void destroy() {// 過濾器銷毀,一般是釋放資源}/*** 某些url需要登陸才能訪問(session驗(yàn)證過濾器)*/@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) arg0;HttpServletResponse response = (HttpServletResponse) arg1; // HttpSession session = request.getSession();//判斷session是否過期HttpServletRequest sr = (HttpServletRequest) request;String strURL = sr.getRequestURL().toString();//此處是判斷url如果是登錄頁面和生成驗(yàn)證碼的action則不執(zhí)行過濾if (strURL.indexOf("/code.action") == -1 && strURL.indexOf("/login.action")== -1) {//獲得session判斷是否存在Subject currentUser = SecurityUtils.getSubject();Session session = currentUser.getSession();User user =(User)session.getAttribute("user");if (user == null) {String errors = "您還沒有登錄,或者session已過期。請(qǐng)先登陸!";request.setAttribute("Message", errors);//跳轉(zhuǎn)至登錄頁面request.getRequestDispatcher("/login.jsp").forward(request, response);} else {arg2.doFilter(request, response);}}else{arg2.doFilter(request, response);}}@Overridepublic void init(FilterConfig arg0) throws ServletException {// 初始化操作,讀取web.xml中過濾器配置的初始化參數(shù),滿足你提的要求不用此方法} }

通過以上過濾就可判斷session過期時(shí)自動(dòng)跳轉(zhuǎn)到登錄頁面,而不是點(diǎn)擊操作時(shí)沒反應(yīng)。

轉(zhuǎn)載于:https://my.oschina.net/mayude/blog/1796535

總結(jié)

以上是生活随笔為你收集整理的判断session失效,并跳转到登录页面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。