본문 바로가기
Thymeleaf

18. Thymeleaf와 Spring Framework의 통합 - 3

by leo2114 2024. 2. 24.
반응형

Thymeleaf에서 Spring Security 사용

Spring Security는 Spring 기반의 웹 애플리케이션에 보안 기능을 제공하는 강력한 프레임워크입니다. 이번 챕터에서는 Thymeleaf 템플릿에서 Spring Security를 사용하여 사용자 인증 및 권한 부여를 구현하는 방법에 대해 알아보겠습니다.

1. Spring Security 의존성 추가

먼저, 프로젝트의 pom.xml 파일에 Spring Security 의존성을 추가합니다.

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

2. Spring Security 설정

Spring Security의 설정은 주로 Java Config 또는 XML 설정을 통해 이루어집니다. 필요한 경우, 사용자 정의 보안 설정을 추가할 수 있습니다.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").hasRole("USER")
            .antMatchers("/public/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login")
            .permitAll()
            .and()
            .logout()
            .permitAll();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user").password("{noop}password").roles("USER")
            .and()
            .withUser("admin").password("{noop}admin").roles("ADMIN");
    }
}

 

위의 코드는 사용자에 대한 인증 및 권한 부여를 구성하는 예제입니다. configure(HttpSecurity http) 메서드에서는 URL 패턴에 따라 접근 권한을 설정하고, configureGlobal(AuthenticationManagerBuilder auth) 메서드에서는 사용자 정보를 설정합니다.

3. Thymeleaf에서 사용

Thymeleaf 템플릿에서 Spring Security를 사용하려면 thymeleaf-extras-springsecurity 의존성을 추가해야 합니다.

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

 

그런 다음, Thymeleaf 템플릿에서 다음과 같이 Spring Security와 관련된 속성을 사용할 수 있습니다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
    <title>Spring Security Thymeleaf Example</title>
</head>
<body>
    <div sec:authorize="isAuthenticated()">
        <p>Welcome, <span sec:authentication="name"></span>!</p>
        <form th:action="@{/logout}" method="post">
            <button type="submit">Logout</button>
        </form>
    </div>
    <div sec:authorize="isAnonymous()">
        <p>You are not logged in.</p>
        <a th:href="@{/login}">Login</a>
    </div>
</body>
</html>

 

위의 코드에서는 사용자의 인증 상태에 따라 다른 컨텐츠를 표시하고 있습니다. sec:authorize 속성을 사용하여 특정 권한이 있는 사용자에게만 보이는 영역을 지정할 수 있습니다.

4. 실행

애플리케이션을 실행하고 로그인 및 로그아웃 페이지를 테스트하여 Spring Security가 올바르게 작동하는지 확인합니다.

5. 요약

이제 Thymeleaf 템플릿에서 Spring Security를 사용하여 사용자 인증 및 권한 부여를 구현하는 방법을 알아보았습니다. Spring Security를 사용하면 웹 애플리케이션의 보안 기능을 쉽게 추가할 수 있습니다. Thymeleaf와 Spring Security를 함께 사용하면 보안을 강화하고 사용자 경험을 개선할 수 있습니다.

반응형