2012-02-26 22 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?