● 세션을 통한 로그인/로그아웃 페이지 설계-시나리오 작성
1. 로그인 화면을 통해 데이터를 전달하여 인증 시도.
2. 인증을 성공하면 결과물로 세션값(인증키)을 등록하고,웰컴 페이지로 이동.
3. 웰컴페이지는 인증기가 있는 사용자만 볼 수 있도록 하여 보안을 강화.
4. 로그아웃을 하면 모든 세션 데이터를 삭제(무효화)하고 로그인 페이지로 이동.
필요한 파일: loginForm.jsp / authentication.jsp / welcom.jsp / logout.jsp = 총4개
디자인 없이 실습!!!! 디자인은 챗 GPT에 나중에 맡겨야겠다...;;
설명: html로 간단한 틀만 만들고, 위에 form에 action을 인증처리jsp페이지로 연결함
해당페이지에서 아이디/비번을 입력하고 버튼을 누르면 authentication.jsp ←인증처리페이지에서 데이터 확인을 한다. 그리고 넘기는 방식은 get이 아닌 post로 함..
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<form name="longinForm" action="authentication.jsp" method="post">
<lable for="id">아이디</lable>
<input name="id" type="text"/>
<br>
<label for="pw">비밀번호</label>
<input name="pw" type="password"/>
<br><br>
<input type="submit" value="로그인"/>
</form>
</body>
</html>
설명:DB연동없이 만드는거라서, 간략한 데이터는 배열로 만들었다.
위에 로그인폼에서 전달받을 데이터를 id,pw에 담았다.
for문으로 배열로 만든 데이터내용 속 아이디랑 비번이 같아야지 로그인이 되도록 함.
아이디랑 비번 값이 맞으면 세션이 유지되는 동안 signedUser이름으로 아이디를 저장하고 웰컴페이지로 이동.
아니면 일치하지 않다고 안내!
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 추가 -->
<% int i;
//전역번수 선언
%>
<% //인증 가능 사용자 아이디,비번 목록 생성
String[] users= {"park","kim","hong"};
String[] passwords ={"park1234","kim4257","hong7777"};
//loginForm으로부터 전달된 데이터를 변수에 저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
for(i=0; i<users.length; i++){
if(users[i].equals(id) && passwords[i].equals(pw)){
//세션값 등록하기
session.setAttribute("signedUser", id); // 세션이 유지되는동안 값저장("이름",값)
response.sendRedirect("welcom.jsp");
//특정 처리 후, 또는 특정 조건일 때에 지정한 페이지로 이동
}
}
if(i ==users.length){
out.println("<script>alert('아이디가 일치하지 않습니다.');history.go(-1);</script>");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 인증 페이지</title>
</head>
<body>
</body>
</html>
설명: 로그인 성공시 나타나는 페이지 ~
한번 더 조건을 만듬 , 배열안에 데이터인 아이디랑 비번 둘다 일치하지 않을 시 해당페이지를 볼수 없고 로그아웃 페이지로 가게 함.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 추가 -->
<%
//인증된 세션이 없는 경우 해당 페이지를 볼수 없게함.
if(session.getAttribute("signedUser") == null) {
response.sendRedirect("logout.jsp");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>welcome 페이지</title>
</head>
<body>
<h1><%= session.getAttribute("signedUser") %>님 환경합니다.</h1>
<a href="logout.jsp">로그아웃</a>
</body>
</html>
설명: 로그아웃을 클릭하면 세션에 저장된 아이디를 모두 삭제하고 맨처음 로그인 페이지로 이동하게 함.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 추가 -->
<%
//1. 기존의 세션 데이터를 모두삭제(세션초기화)
session.invalidate();
//2. 로그인 페이지로 이동
response.sendRedirect("loginForm.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그아웃 페이지</title>
</head>
<body>
</body>
</html>