[스프링] 스프링 시큐리티를 이용한 로그인 페이지 커스터마이징

스프링 시큐리티는 웹 애플리케이션의 보안과 접근 제어를 위한 강력한 도구입니다. 이 도구를 활용하여 로그인 페이지의 커스터마이징을 할 수 있습니다. 이번 포스트에서는 스프링 부트스프링 시큐리티를 사용하여 로그인 페이지를 커스터마이징하는 방법에 대해 알아보겠습니다.

1. 로그인 페이지 커스터마이징을 위한 프로젝트 환경 구성

먼저, 스프링 부트 기반의 프로젝트를 생성합니다. pom.xml에 스프링 시큐리티 의존성을 추가하여 프로젝트를 구성합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. 커스텀 로그인 페이지 생성

다음으로, 커스텀 로그인 페이지를 생성합니다. resources/templates 폴더 안에 login.html 파일을 작성합니다. 해당 파일은 기본 로그인 페이지의 레이아웃을 디자인할 수 있습니다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form th:action="@{/login}" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required autofocus/>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required/>
        </div>
        <button type="submit">Login</button>
    </form>
</body>
</html>

3. 스프링 시큐리티 설정

마지막으로, WebSecurityConfig 클래스를 생성하여 스프링 시큐리티를 설정합니다. 커스텀 로그인 페이지를 사용하도록 설정하고, 기본 로그인 경로를 오버라이드하여 커스텀 로그인 페이지로 이동하도록 지정합니다.

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/custom-login").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/custom-login")
                .permitAll();
    }
}

결론

이제 스프링 시큐리티를 사용하여 로그인 페이지를 커스터마이징하는 방법을 알아보았습니다. 해당 설정을 적용하면 보다 유연하고 사용자 친화적인 로그인 페이지를 제공할 수 있습니다.

참고문헌: