2014-11-23 2 views
0

세션 코드가 제대로 작동하지 않습니다. 링크를 복사 한 후 로그 아웃하지 않고 링크에 액세스하려고 시도했을 때 로그인하지 않고 작동했습니다. 다음은JSP에서 세션이 제대로 작동하지 않습니다.

String user_name = (String)session.getAttribute("user_name"); 

: 여기

String user_name=request.getParameter("user_name");   
String pass=request.getParameter("pass"); 
session.setAttribute("user_name", user_name); 
session.setAttribute("pass",pass); 

내 세션을 전송 한있는 해당 페이지의 코드입니다 : 여기

내가 세션을 생성 한 내 로그인 페이지의 코드는 로그 아웃 페이지의 코드 :

session.setAttribute("user_name", null); 
session.invalidate(); 
response.sendRedirect("index.jsp"); 
response.addHeader("cache-control","no-cache"); 
+0

누군가가 로그온했는지 어떻게 확인합니까? (세션에 암호를 저장하지 마십시오 :-)) – DarkBee

+0

'String user_name = (String) session.getAttribute ("user_name"); ' 'user_name'은 로그 아웃 후 로그인 페이지로 다시 향하는 동안 null입니다. 당신은'sysout'에 의해 그것을 확인할 수있다. – Pravin

+0

세션은 당신이 로그인했는지 여부를 체크하지 않는다. 지정된 사용자 (인증 여부)의 속성 만 저장합니다. 제한된 리소스에 액세스하기 전에 사용자가 인증되었는지 확인하는 것이 좋습니다. –

답변

0

한 가지 중요한 것은 sendRedirect()이 응답. 이 보호 된 자원의 경우 index.jsp에서

response.addHeader("cache-control","no-cache"); 
response.sendRedirect("index.jsp"); 

, 당신은하지 않을 경우 유효한 user_name 세션에서 로그인 페이지로 리디렉션합니다.

String user_name = (String)session.getAttribute("user_name"); 
if (user_name == null) response.sendRedirect("login.jsp"); 
+0

hello Roman, 이 정보를 제공해 주셔서 감사 드리며 응답에 마지막 명령으로 항상 sendRedirect()를 작성합니다. –

관련 문제