Closed javajigi closed 7 years ago
현재 구현되어 있는 코드는 로그인 실패시 cookie 헤더값을 false로 전달하지 않아도 정상적으로 동작합니다. 만약 false로 전달하는 구현을 하고 싶다면 다음과 같이 구현하시면 됩니다.
https://github.com/slipp/web-application-server/blob/was-step1-bad-version/src/main/java/webserver/RequestHandler.java 코드 기준으로 설명할께요.
77~82라인 소스
if (user.login(params.get("password"))) {
DataOutputStream dos = new DataOutputStream(out);
response302LoginSuccessHeader(dos);
} else {
responseResource(out, "/user/login_failed.html");
}
위 코드를 다음과 같이 구현한다.
if (user.login(params.get("password"))) {
DataOutputStream dos = new DataOutputStream(out);
response302LoginSuccessHeader(dos);
} else {
DataOutputStream dos = new DataOutputStream(out);
response302LoginFailureHeader(dos);
}
위와 같이 response302LoginFailureHeader 메소드를 추가한 후 다음과 같이 구현하시면 됩니다.
private void response302LoginFailureHeader(DataOutputStream dos) {
try {
dos.writeBytes("HTTP/1.1 302 Redirect \r\n");
dos.writeBytes("Set-Cookie: logined=false \r\n");
dos.writeBytes("Location: /user/login_failed.html \r\n");
dos.writeBytes("\r\n");
} catch (IOException e) {
log.error(e.getMessage());
}
}
133페이지 '4.2.1.5 요구사항 5 - 로그인하기'의 요구사항 마지막 줄에 '로그인이 실패하면 Cookie 헤더값이 logined=false로 전달되어야 한다.' 라고 쓰여져 있는데요, 4장의 코드에서 로그인 실패시 logined=false로 만들어 주는 부분을 찾지 못하겠습니다.
실례가 되지 않는다면, 어느 곳에 logined=false로 만들어 주는 부분이 있는지 알려 주세요.
메일을 통해 권순규님의 질문에 답변한 내용을 정리한 글이다.