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를 함께 사용하면 보안을 강화하고 사용자 경험을 개선할 수 있습니다.
'Thymeleaf' 카테고리의 다른 글
22. Thymeleaf 성능 최적화 - 1 (0) | 2024.02.24 |
---|---|
21. 실전 예제와 실무 적용 사례 - 3 (0) | 2024.02.24 |
20. 실전 예제와 실무 적용 사례 - 2 (0) | 2024.02.24 |
19. 실전 예제와 실무 적용 사례 - 1 (0) | 2024.02.24 |
17. Thymeleaf와 Spring Framework의 통합 - 2 (0) | 2024.02.24 |
16. Thymeleaf와 Spring Framework의 통합 - 1 (0) | 2024.02.24 |
15. Thymeleaf의 유효성 검증 - 2 (0) | 2024.02.24 |
14. Thymeleaf의 유효성 검증 - 1 (0) | 2024.02.24 |