1. 程式人生 > >Jfinal登入攔截器,死迴圈,原因以及解決辦法

Jfinal登入攔截器,死迴圈,原因以及解決辦法

public class AuthInterceptor implements Interceptor {

public void intercept(ActionInvocation ai) {

Controller c = ai.getController();

String userName =  c.getSessionAttr("userName");

if (userName == null) {

c.redirect("/login");//如果將login命名為其他字串就會死迴圈

return;

}

ai.invoke();

}

}

如果將login命名為其他字串(如/aaa,/loginaa,/bb...等),就會死迴圈,這是何解?

答案:

解答1:因為其他的路徑還被AuthInterceptor 攔截了,而/login應該是加上了@Clear,/login不會經過攔截器。所以redirect的路徑 要加上Clear。Clear用法見你的Jfinal版本對應的文件。

解解2:攔截器按照程式碼的意圖陷入死迴圈而已,將不需要該攔截器的 action 使用 @Clear(AuthInterceptor.class) 清除一下即可

相關推薦

cas單點登入遇到 supplied credentials: [admin+password] 問題原因以及解決辦法

最近在寫shiro-cas單點登入demo的時候,真的是問題多多,百度了半天也沒有什麼有用的資訊,服務端部署了一遍又一遍,真的sui(抱怨over..哈哈) 我遇到的問題是服務端配置資料庫連線的時候出現的問題,先回顧一下流程 一、修改deployerConfigContext.xm

Jfinal登入攔截迴圈原因以及解決辦法

public class AuthInterceptor implements Interceptor { public void intercept(ActionInvocation ai) {

java編碼解碼。亂碼原因解決辦法

轉換流的編碼,常見的出現亂碼組合 package com.qianfeng.test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import

關於tomcat埠的修改以及同時部署多個應用自己遇到的問題以及解決辦法

1.要求:在同一臺電腦上要同時部署多個應用,也就是要同時開啟多個tomcat  我的tomcat版本:apache-tomcat-6.0.41 解決方法: 1.使用不需要安裝的tomcat(解壓即可使用的) 2.修改你的tomcat檔案下的conf下的server.xml

解除安裝Oracle virtual box 後無法安裝virtual box 的原因以及解決辦法

可以進入安全模式直接刪除。 也可以在正常模式下按以下步驟取得許可權後再刪除:      點選想獲取許可權的資料夾,右鍵-屬性,我們先來獲得這個資料夾的所有權,點安全-高階-所有者,接著點編輯-高階其他使用者或組,在輸入選擇的物件名稱裡面輸入你的使用者名稱,或者點高階-立即查詢,選擇你的使用者名稱,確定,然後選

spring+springMVC,宣告式事務失效原因以及解決辦法

一.宣告式事務配置: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property

設定JDK環境變數後無法生效的原因解決辦法

最開始安裝過安裝版的JDK版本,然後修改環境變數並不能生效,例如一開始安裝了1.8的版本,後修改環境變數為1.7,命令cmd 裡java -version仍顯示1.8   這是因為當使用安裝版本的JDK程式時,在安裝結束後安裝程式會自動將java.exe、javaw.exe

推廣域名被微信中被攔截、封殺、遮蔽的原因以及解決方案

科普: 域名被微信封殺,顯示的是連結無法訪問; 域名被微信攔截,是跟淘寶一樣-如需瀏覽,請長按網址複製後使用瀏覽器訪問。域名被微信遮蔽,顧名思義,遮蔽,肯定是看不到!!域名被信封,確實很多因素有關,簡單列舉下: 1、微信規定域名要備案,並且要加白名單,新買的域名沒做站就被封,應該是搶的剛被人放棄的域

SQL Server鎖產生原因解決辦法

其實所有的死鎖最深層的原因就是一個:資源競爭 表現一:   一個使用者A 訪問表A(鎖住了表A),然後又訪問表B,另一個使用者B 訪問表B(鎖住了表B),然後企圖訪問表A,這時使用者A由於使用者B已經鎖住表B,它必須等待使用者B釋放表B,才能繼續,好了他老人家就只好老老實實

mysql鎖的原因解決辦法

本文轉載自http://www.jb51.net/article/78088.htm 死鎖(Deadlock) 所謂死鎖:是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或

angular4 使用HttpClient攔截 檢查token失效返回登入頁面

1、首先建立一個攔截器服務:InterceptorService.ts 2、在app.module.ts檔案裡引入攔截器 import {InterceptorService} from ‘./InterceptorService’; import {HTTP_INTERCEPTORS

基於SpirngMVC登入攔截(使用了redis快取)僅供參考

package com.avic.common.interceptor; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException;

spring mvc定義登入攔截(不登入不讓訪問相關資源)為什麼要放權/login.do(就是不攔截/login.do)?

spring.xml攔截器配置如下: <mvc:interceptor> <mvc:mapping path="/**" /><mvc:exclude-mapping path="/login.do" /><bean class="

[CSS] hover 迴圈不斷閃現。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .content{

攔截和過濾器區別Struts2與SpringMVC的區別

攔截器和過濾器 1.攔截器是基於java反射機制的,而過濾器是基於函式回撥的; 2.攔截器不依賴於servlet容器,而過濾器依賴於servlet容器; 3.攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用; 4.攔截器可以訪問Action上下文、值棧裡的物件,而過

Springboot中自定義springmvc攔截;HandlerInterceptor中preHandlepostHandleafterCompletion解析

要實現自定義HandlerInterceptor 。通過 WebMvcConfigurer 的實現類屬性注入,完成springboot自定義攔截 自定義一個攔截器; package com.baidu.

python寫快排 寫了迴圈 記下來警醒一下

寫 尋找最小k 個數 時,直接用快排寫。但是快排一開始寫錯了。。。 class Solution: def GetLeastNumbers_Solution(self, tinput, k): if tinput ==[] or k > len(

使用攔截獲取HttpServletResponse 物件HttpServletRequest物件

攔截器的配置說明 <mvc:interceptors> <bean class="interceptor.HttpServletResponseInt

【Flume】【原始碼分析】flume中攔截的原始碼分析以TimestampInterceptor為例

本文將以TimestampInterceptor為例來分析一下flume中攔截器的工作原理 首先來看下改攔截器的實現結構 1、實現了Interceptor介面 該介面的方法定義如下: public void initialize(); public Event in

webview跳轉頁面的返回操作不成功迴圈問題

專案中需要用webView載入第三方的web頁面,其中有個頁面有重定向到另外一個頁面,造成了頁面無法後退,後退到上個頁面,又重定向到之前介面,重定向源頁面也被加入到瀏覽記錄中,剛開始想查詢api中找個編輯歷史記錄的方法,把找重定向源頁面從歷史記錄中刪除,半天找不到,只有c