본문 바로가기

Spring/Spring Security

[Spring Security] 2. 커스텀 로그인 페이지 설정

728x90
반응형

설정

security-context.xml

- security:form-login에 login-page 설정 추가

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

직접 특정 URI를 지정하는데, 이 때 반드시 GET 방식으로 접근하는 URI여야 한다.

 

src/main/java/(__.__.controller 패키지)/MemberLoginController.java

package com.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import lombok.extern.log4j.Log4j;

@Controller
@Log4j
public class MemberLoginController {

	@GetMapping("/login")
	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 Account");
		}
		
		if(logout != null) {
			model.addAttribute("logout", "Logout!!");
		}
	}
}

 

WEB-INF/views/login.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 http-equiv="Content-Type" content="text/html; 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' name='username' value='admin'>
	
		<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이다.

실제 로그인 처리 작업은 '/login'을 통해 이뤄지는데, 반드시 POST 방식으로 데이터 전송해야 한다.

<input> name 속성은 기본적으로 username과 password 이용

 

그리고 hidden 타입에 있는 csrf는 다음 포스팅에서 설명하겠다.

728x90
반응형