2012-02-26 177 views
0

org.apache.jasper.JasperException一個Servlet:發生處理JSP頁面/Admin.jsp例外,在第25行認證在使用cookie提高例外

22: } 
23: } 
24: } 
25: if(!ourcookie.getValue().equals("authval"))response.sendRedirect("Login.jsp?ref=nocookie"); 
26: %> 

以下是代碼:

<% 
Cookie[] cookies=request.getCookies(); 
Cookie ourcookie=null; 
if(cookies!=null) 
{ 
for(int i=0;i<cookies.length;i++) 
{ 
if(cookies[i].getName().equals("auth")) 
{ 
ourcookie=cookies[i]; 
} 
} 
} 
if(!ourcookie.getValue().equals("authval"))response.sendRedirect("Login.jsp?ref=nocookie"); 
%> 
+1

它說「異常」已被拋出。你爲什麼不查找它並閱讀它的消息?它包含了完整的答案。 – BalusC 2012-02-26 11:37:12

回答

1

在調用其getValue()方法之前,您不檢查ourcookie是否爲空,並且可能爲未經身份驗證的用戶引發NullpointerException。通過調試器檢查日誌和/或執行此代碼將確認它。

重要提示:依靠cookie的存在和價值來了解是否有人被認證是非常危險的:任何腳本小孩都能夠發送這樣的cookie與其請求,而不需要通過認證過程。不要依賴來自客戶端的數據來了解用戶是否已通過身份驗證。將認證標誌存儲在HTTP會話中,該會話保留在服務器端。

備註:您的Java代碼應該縮進以更易讀,並且不應該存在於JSP中。 Scriptlet不應該再使用了。見How to avoid Java code in JSP files?