Аутентификация в сервлете с использованием исключения файлов cookie - PullRequest
0 голосов
/ 26 февраля 2012

org.apache.jasper.JasperException: произошло исключение при обработке страницы JSP /Admin.jsp в строке 25

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 Ответ

1 голос
/ 26 февраля 2012

Вы не проверяете, что ourcookie не является нулевым, прежде чем вызывать его метод getValue(), и это, вероятно, вызывает исключение NullpointerException для неаутентифицированных пользователей. Проверка журналов и / или выполнение этого кода через отладчик подтвердит его.

Важное замечание: полагаться на наличие и ценность куки-файла, чтобы узнать, аутентифицирован ли кто-то, очень опасно: любой скрипт-ребенок может отправлять такой куки-файл со своими запросами, без необходимости проходить процедуру аутентификации. Не полагайтесь на данные, поступающие от клиента, чтобы узнать, аутентифицирован ли пользователь. Сохраните аутентифицированный флаг в сеансе HTTP, который остается на стороне сервера.

Примечание: ваш код Java должен иметь отступ, чтобы он был более читабельным, и его не должно быть в JSP. Скриплеты больше не должны использоваться. См. Как избежать использования кода Java в файлах JSP? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...