[jsp-실습정리]session을 사용한 로그인 인증처리,로그아웃 페이지 만들기

J의 괴발 공부·2023년 8월 10일
0

java

목록 보기
5/13

오늘의 실습정리

간단한 로그인/로그아웃을 실행해보자!! 단, DB연동없이...

● 세션을 통한 로그인/로그아웃 페이지 설계-시나리오 작성
1. 로그인 화면을 통해 데이터를 전달하여 인증 시도.
2. 인증을 성공하면 결과물로 세션값(인증키)을 등록하고,웰컴 페이지로 이동.
3. 웰컴페이지는 인증기가 있는 사용자만 볼 수 있도록 하여 보안을 강화.
4. 로그아웃을 하면 모든 세션 데이터를 삭제(무효화)하고 로그인 페이지로 이동.
필요한 파일: loginForm.jsp / authentication.jsp / welcom.jsp / logout.jsp = 총4개

디자인 없이 실습!!!! 디자인은 챗 GPT에 나중에 맡겨야겠다...;;

loginForm.jsp

설명: 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>

authentication.jsp

설명: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>

welcom.jsp

설명: 로그인 성공시 나타나는 페이지 ~
한번 더 조건을 만듬 , 배열안에 데이터인 아이디랑 비번 둘다 일치하지 않을 시 해당페이지를 볼수 없고 로그아웃 페이지로 가게 함.

<%@ 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>

logout.jsp

설명: 로그아웃을 클릭하면 세션에 저장된 아이디를 모두 삭제하고 맨처음 로그인 페이지로 이동하게 함.

<%@ 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>
profile
괴발자가 될것인가, 개발자가 될것인가?

0개의 댓글