깃 허브:https://github.com/leejeongchan/springSecurity.git
이번엔 스프링 자체가 아닌 커스텀으로 로그인 페이지를 만들어보겠습니다.
이전 게시글이 기억이 잘 나지 않는다면 아래 링크를 타서 다시 보도록 합니다.
2019/05/26 - [웹/Spring] - 웹 시큐리티(Web Security)-2Day
이를 위해서 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 |