본문으로 바로가기

웹 시큐리티(Web Security)-3Day

category 웹/Spring 2019. 5. 27. 22:42

깃 허브:https://github.com/leejeongchan/springSecurity.git

이번엔 스프링 자체가 아닌 커스텀으로 로그인 페이지를 만들어보겠습니다.

 

이전 게시글이 기억이 잘 나지 않는다면 아래 링크를 타서 다시 보도록 합니다.

2019/05/26 - [웹/Spring] - 웹 시큐리티(Web Security)-2Day

 

웹 시큐리티(Web Security)-2Day

설명하기 앞서 웹 세큐리티 설정을 모르시는 분은 아래를 타고 다시 보시기 바랍니다. 2019/05/25 - [웹/Spring] - 웹 시큐리티(Web Security)-1Day 웹 시큐리티(Web Security)-1Day 스프링 웹 시큐리티 동작 방식..

dlwjdcks5343.tistory.com

이를 위해서 security-context.xml에 커스텀 로그인페이지를 등록합니다.

 

<security:form-login login-page="/customLogin"/>

이를 추가해줍니다. 반드시 GET 방식입니다.!

 

이제 CommonController에 추가를 해줍니다.

 

@GetMapping("/customLogin")
	public void loginInput(String error,String logout,Model model) {
		log.info("error: "+error);
		log.info("logout: "+logout);
		
		if(error !=null) {
			model.addAttribute("error","Login Error Check Your Accout");
			
		}
		if(logout!=null) {
			model.addAttribute("logout","Logout!!");
		}
	}

위 메서드를 추가해줍니다. 

 

GET 방식으로 파라미터로 error 메시지와 logout 메시지를 전달 가능 하게 합니다.

 

다음으로 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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Custom Login Page</h1>
	<h2><c:out value="${error}"/></h2>
	<h2><c:out value="${logout}"/></h2>
	
	<form method="post" action="/login">
		<div>
			<input type='text' name='username' value='admin'>
		</div>
		<div>
			<input type='password' name='password' value='admin'>
		</div>
		<div>
			<input type='submit'>
		</div>
		<input type='hidden' name="${_csrf.parameterName}" value="${_csrf.token}">
	</form>
</body>
</html>

우선 <form> 태그에 action을 /login으로 지정합니다. 반드시 정해진 형식입니다. 또한 POST 방식으로 데이터를 전달

 

해야 합니다.

 

<input>태그에 name속성은 username과 password로 지정해줍니다.

 

특이한 hidden 값의 name ${_csrf.parameterName} 은 _csrf 라는 이름으로 처리가 됩니다. value는 임의의 값입니다.

 

즉 잘못 입력시 다시 로그인 페이지로 자동적으로 이동합니다.

 

이 때 앞서 컨트롤러에서 error를 파라미터로 받는데 이를 jsp페이지에서 뿌려줍니다.

 

다음 게시는 토큰을 이어서 설명하겠습니다.

 

 

 

' > Spring' 카테고리의 다른 글

웹 시큐리티(Web Security)-5Day  (0) 2019.05.28
웹 시큐리티(Web Security)-4Day[CSRF]  (0) 2019.05.28
웹 시큐리티(Web Security)-2Day  (0) 2019.05.26
웹 시큐리티(Web Security)-1Day  (0) 2019.05.25
Spring 트랜잭션 설정  (0) 2019.05.06