使用Cookie引发异常在Servlet中进行身份验证

时间:2012-02-26 07:23:13

标签: jsp servlets cookies

org.apache.jasper.JasperException:在第25行处理JSP页面/Admin.jsp时发生异常

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 个答案:

答案 0 :(得分:1)

在调用ourcookie方法之前,不检查getValue()是否为空,这可能会为未经过身份验证的用户抛出NullpointerException。通过调试器检查日志和/或执行此代码将确认它。

重要提示:依靠cookie的存在和价值来了解某人是否经过身份验证是非常危险的:任何脚本小子都能够通过其请求发送此类cookie,而无需通过您的身份验证过程。不要依赖来自客户端的数据来了解用户是否经过身份验证。在HTTP会话中存储经过身份验证的标志,该会话保留在服务器端。

附注:您的Java代码应该缩进为更具可读性,并且它不应该在JSP中。不应再使用Scriptlet。请参阅How to avoid Java code in JSP files?