[C-3-4] 로그아웃

2020. 1. 21. 23:50Project C (SBMS)/Project C 파트3

반응형

로그아웃 버튼을 클릭하면, 로그아웃 창으로 이동하며, 한번더 로그아웃을 누르면, 로그아웃을 처리한다.

 

 


views

customLogin.jsp

 

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ include file="includes/header.jsp"%>	

<div style="margin : 200px 600px 100px 600px;">

						<form role="form" method='post' action="/sbms/login">
							<fieldset>
								<div class="form-group">
									<input class="form-control" placeholder="userid" name="username" type="text" autofocus>
								</div>
								<div class="form-group">
									<input class="form-control" placeholder="Password" name="password" type="password" value="">
								</div>
								<div class="checkbox">
									<label>
										<input name="remember-me" type="checkbox">Remember Me
									</label>
								</div>
								<!-- Change this to a button or input when using this as a form -->
								<a href="index.html" class="btn btn-lg btn-success btn-block">Login</a>
								<a href="/sbms/customSignup" class="btn btn-lg btn-primary btn-block">Sign Up</a>
							</fieldset>
							<input type="hidden" name="${_csrf.parameterName}"
								value="${_csrf.token}" />
						</form>

</div>
	<!-- jQuery -->
	<script src="/sbms/resources/vendor/jquery/jquery.min.js"></script>

	<!-- Bootstrap Core JavaScript -->
	<script src="/sbms/resources/vendor/bootstrap/js/bootstrap.min.js"></script>

	<!-- Metis Menu Plugin JavaScript -->
	<script src="/sbms/resources/vendor/metisMenu/metisMenu.min.js"></script>

	<!-- Custom Theme JavaScript -->
	<script src="/sbms/resources/dist/js/sb-admin-2.js"></script>
  <script>
  
  
  
  
  $(".btn-success").on("click", function(e){
    
    e.preventDefault();
    $("form").submit();
    
  });
  
  </script>
  
<c:if test="${param.logout != null}">
      <script>
      $(document).ready(function(){
      	alert("로그아웃하였습니다.");
      });
      </script>
</c:if>  

</body>

</html>

 


views

customLogout.jsp

 

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ include file="includes/header.jsp"%>

<div style="margin : 200px 600px 100px 600px;">
					<div class="panel-heading">
						<h3 class="panel-title">Logout Page</h3>
					</div>
					<div class="panel-body">
						<form role="form" method='post' action="/sbms/customLogout">
							<fieldset>
								
								<!-- Change this to a button or input when using this as a form -->
								<a href="index.html" class="btn btn-lg btn-success btn-block">Logout</a>
							</fieldset>
							<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
						</form>
					</div>
</div>


	<!-- jQuery -->
	<script src="/resources/vendor/jquery/jquery.min.js"></script>

	<!-- Bootstrap Core JavaScript -->
	<script src="/resources/vendor/bootstrap/js/bootstrap.min.js"></script>

	<!-- Metis Menu Plugin JavaScript -->
	<script src="/resources/vendor/metisMenu/metisMenu.min.js"></script>

	<!-- Custom Theme JavaScript -->
	<script src="/resources/dist/js/sb-admin-2.js"></script>
	
	<script>
	
	$(".btn-success").on("click", function(e){
		
		e.preventDefault();
		$("form").submit();
		
	});
	
	</script>
	
	<c:if test="${param.logout != null }">
		<script>
		$().ready(function(){
			alert("로그아웃했습니다.");
		});
		</script>
	</c:if>
	
</body>

</html>

 


 

로그아웃 버튼 클릭 시 로그아웃 페이지

 

로그아웃 페이지

 


스프링 시큐리티 공식 로그인 정보 유지 테이블을 생성한다.

 

create table PERSISTENT_LOGINS (
  USERNAME varchar(64) not null,
  SERIES varchar(64) primary key,
  TOKEN varchar(64) not null,
  LAST_USED timestamp not null
);

로그아웃 시

delete from persistent_logins

where username = '유저아이디'

를 스프링 자체에서 실행하므로, 준비해놓아야 한다.

 

참고로, 로그인 부분에서 말하는 것을 놓쳤는데,

로그인 창에서 로그인 시 remember-me체크한 후 로그인하면, 

 

persistent_logins 테이블에서 로그인 정보를 유지한다. 

서버에서 관리하면, 데이터베이스상에서 정보가 공유가능하기때문에, 더욱 안정적으로 운영이 가능하다.

 

PERSISTENT__LOGINS 테이블의 로그인 정보 유지 관리

 

반응형