判斷session失效,並跳轉到登入頁面
一,首先在登入頁面加入以下程式碼,作用是使用ifrme等載入頁面時,跳轉登入頁面會巢狀在框架內,讓登入頁面全屏
<script language="JavaScript">
if (window != top)
{
top.location.href = location.href;
}
</script>
二,在web.xml中配置過濾器,過濾所有的action判斷session是否過期
<!-- session過濾器配置相關 -->
<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>-->
<!--在這種情況下,如果請求是以/contract/…或者/user/…開頭的,並且是通過request dispatcher的forward方法傳遞過來或者直接從客戶端傳遞過來的,則必須經過這個過濾器。-->
<!--<dispatcher>REQUEST</dispatcher>-->
</filter-mapping>
三,相關的過濾類
該類中主要判斷action是否是生成驗證碼和跳轉到登入頁面的類,如果是以上兩個類則不過濾,否則無法顯示登入頁面和驗證碼,除此以外的都可以過濾
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 {
@Override
public void destroy() {
// 過濾器銷燬,一般是釋放資源
}
/**
* 某些url需要登陸才能訪問(session驗證過濾器)
*/
@Override
public 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如果是登入頁面和生成驗證碼的action則不執行過濾
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已過期。請先登陸!";
request.setAttribute("Message", errors);
//跳轉至登入頁面
request.getRequestDispatcher("/login.jsp").forward(request, response);
} else {
arg2.doFilter(request, response);
}
}
else
{
arg2.doFilter(request, response);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// 初始化操作,讀取web.xml中過濾器配置的初始化引數,滿足你提的要求不用此方法
}
}
通過以上過濾就可判斷session過期時自動跳轉到登入頁面,而不是點選操作時沒反應。
相關推薦
判斷session失效,並跳轉到登入頁面
一,首先在登入頁面加入以下程式碼,作用是使用ifrme等載入頁面時,跳轉登入頁面會巢狀在框架內,讓登入頁面全屏<script language="JavaScript"> if (window != top) { top.locat
spring security 採用 資料庫配置檢測使用者登入,並跳轉不同頁面
applicationContext-security.xml <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schem
js獲取url 中的值,並跳轉相應頁面
實現方法:一:獲取URL帶QUESTRING引數的JAVASCRIPT客戶端解決方案,相當於asp的request.querystring,PHP的$_GET1.函式:<Script language="javascript">function GetRequest() {var url = lo
js檢查ie低版本瀏覽器,並跳轉更新頁面
引言 現在我們用的一些主流前端框架,如vue, angular, react等對低版本的ie瀏覽器支援不好,一般指的是ie9以下的。如果低版本ie瀏覽器,開啟我們的網站頁面時, 我們希望給使用者溫馨的提示,去升級瀏覽器,而不是頁面混亂,各種報錯。 怎
掃描二維碼下載app,判斷是Android還是ios,並跳轉到不同的下載地址
寫在前面 通常,我們開發一個app,有Android版本,有ios版本,但是,我們有時候只有一個二維碼可以放置,比如,通過社會化分享,分享到微信一張圖片,通過微信識別二維碼來下載我們的app,此時,只有一個二維碼, 那麼怎樣,讓ios系統使用者掃描二維碼下載的
Ajax Session失效跳轉登入頁面的方法
在Struts應用中,我們發出的請求都會經過 相應的攔截器進行相關處理,一般都會有一個使用者登入攔截(Session失效攔截);一般請求的話,如果Session失效時,我們會跳到登入頁面,可是如果我們採用AJAX請求時,將會返回登入頁面的HTML程式碼,這肯定不是我們想要的,
springmvc控制登入使用者session失效後跳轉登入頁面
第一步,配置 web.xml [html] view plain copy print? <spanstyle="font-size:18px;"><session-config> <session-timeou
django寫使用者登入判定並跳轉制定頁面
1.首先看要設定登陸的介面 book/view.py @user_util.my_login #相當於 select_all=my_login(select_all) def select_all(request): # 查詢所有的書 book_list = Boo
Iframe應用和ServletResponse重定向,session過期過濾器跳轉登入頁面
最近專案用到了ServletResponse的重定向,也就是servlet過濾器,session過期自動跳轉登入頁面,以前見過其他寫法,感覺麻煩,不就是重定向嗎,一句程式碼搞定,寫那麼多幹嘛。最近真正用到這個技術寫法,不得不去考究下。 1.session過期一般寫法 res
java 攔截器做session過期跳轉登入頁面時無法重定向問題
這個問題好坑,也沒人寫個標題出來提醒大家不要再入坑,以前只是用,沒具體自己寫寫,這次專案用到了,自己寫寫還真遇到問題,這次記錄下來防止再次入坑。 1.起初懷疑攔截器配置有問題,經過驗證,攔截器沒有問題,訪問攔截到了,response也重定向了,就是頁面無法跳轉。
PC端判斷螢幕寬度到達手機寬度的時候,直接跳轉手機頁面
<script> // //判斷螢幕寬度到達手機寬度的時候,直接跳轉手機頁面 // window.addEventListener("resize", function()
h5 網頁 直接喚起淘寶app,並跳轉到對應商品頁面
<a href="https://t.asczwa.com/taobao?backurl=開啟淘寶需要顯示的頁面連結">淘寶</a> 商品連結獲取方法: 點選淘寶右上角,選擇分享,點選複製連結,粘貼後裡面就有商品頁面對應的連結
ionic 1頁面跳轉登入頁面後,返回按鈕處理
說到ionic返回按鈕,可能第一想到的就是ionic在app.config中配置按鈕的情況,小夥紫還不錯嘛。 這篇blog想討論的恰好不是這個,不過也和他有關啦,就因為這個按鈕,在正常頁面跳轉時候,肯定是需要的。 凡事總有例外: 很多情況下,比
android鎖屏狀態下, 新訊息喚醒螢幕,並跳轉到指定頁面
最近在做一個專案,有個功能,就和QQ電話差不多,我這邊手機鎖屏狀態,當QQ電話過來時,立刻喚醒螢幕,並顯示QQ來電介面,我的是當裝置端有事件發生時通知app端彈出介面,實時顯示裝置端資訊。 最核心的程
shiro許可權控制,會話超時跳轉登入頁面只有iframe跳轉,父頁面沒有跳轉
在使用Apache Shiro框架做許可權驗證時,因為我的頁面是使用iframe做了一個上左右的分層,上面上log,左側是選單,具體的內容則顯示在右側。 當我點選某選單,此時如果會話超時了,則登入頁面只會顯示到右側區域,看起來不是很友好,所以需要登入頁面顯示到整個瀏覽器
自動識別PC端、移動端,並跳轉
PC端和移動端程式碼是分開的,各有一套程式碼的情況下: 在PC端的HTML檔案head標籤中間新增一段自動識別移動端的JavaScript程式碼: <script type="text/javascript"> if(/Android|webOS| iPhone | iPad | iPo
vue2自定義分頁元件,可設定每頁顯示數量,指定跳轉具體頁面
分頁元件 <template> <div> <div class="page-helper" v-if="showPageHelper"> <div class="page-list">
iOS 實現點選tabbar跳轉登入頁面
在APP的設計中常常有需要點選tabbar直接進行跳轉登入的操作。下面說一下需要怎麼來實現這個操作。 程式碼。 (BOOL)tabBarController:(UITabBarController )tabBarController should
前臺ajax重寫方法搭配後臺filter返回status實現ajax請求跳轉登入頁面
前後端分離之後,原生的jquery的ajax不能實現控制頁面跳轉,一般會出現狀態碼302錯誤,但是可以通過重寫ajax增強方法,搭配後臺返回狀態碼錯誤實現頁面跳轉.後臺的filter核心程式碼為 HttpServletResponse httpResponse = (Ht
mvc ajax 請求 session失效,跳轉到登入頁
public class BaseController : Controller { /// /// 登入驗證/掉線攔截 /// protected override void OnActionExecuting(ActionExecutingContext