반응형
학습목표 :
1.커스텀 login 처리
2.화면별/경로별 접근 인가
패키지 설정 : config 생성
1. WebMvcConfig class 를 생성한다. .
package com.example.springsecurity.config;
import org.springframework.boot.web.servlet.view.MustacheViewResolver;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
MustacheViewResolver resolver = new MustacheViewResolver();
resolver.setCharset("UTF-8");
resolver.setContentType("text/html;charset=UTF-8");
resolver.setPrefix("classpath:/templates/");
resolver.setSuffix(".html");
registry.viewResolver(resolver);
}
}
2. SecurityConfig class 를 생성한다.
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
// 스프링 시큐리티에서는 비밀번호를 암호화해서 저장해야 합니다. 이때 사용할 암호화 클래스입니다.
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// 시큐리티 설정
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
// csrf 보안 해제 (개발 환경에서 설정시 복잡성) 가동계에서는 주석처리 필요.
http.csrf(csrf -> csrf.disable());
// 접근 경로별 인가 설정
http.authorizeHttpRequests(auth -> auth
.anyRequest().permitAll()
);
//SpringSecurity 기본form login사용
http.formLogin(httpSecurityFormLoginConfigurer -> httpSecurityFormLoginConfigurer.permitAll()
);
return http.build();
}
}
.requestMatchers("/user/**").authenticated() 추가되면
http.formLogin(httpSecurityFormLoginConfigurer -> httpSecurityFormLoginConfigurer
.loginProcessingUrl("/loginProc")
);
http://localhost:8080/user/user1 호출시
추가해야 기본 login 화면이 나온다.
package com.example.springsecurity.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
// 스프링 시큐리티에서는 비밀번호를 암호화해서 저장해야 합니다. 이때 사용할 암호화 클래스입니다.
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// 시큐리티 설정
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
// csrf 보안 해제 (개발 환경에서 설정시 복잡성) 가동계에서는 주석처리 필요.
http.csrf(csrf -> csrf.disable());
// 접근 경로별 인가 설정
http.authorizeHttpRequests(auth -> auth
.requestMatchers("/user/**").authenticated()
.anyRequest().permitAll()
);
//SpringSecurity 기본form login사용
http.formLogin(
httpSecurityFormLoginConfigurer -> {
}
);
return http.build();
}
}
Spring Security 로그인 처리 동작 확인
Spring Security 인증 처리 과정
반응형
'Spring Security' 카테고리의 다른 글
2일차, 스프링 시큐리티 1 (3) | 2025.01.08 |
---|---|
4일차,스프링 시큐리티 (pom.xml) 분석 (2) | 2024.12.29 |
1일차, 스프링 부트 환경세팅, Docker MarinaDB 설치 (1) | 2024.12.28 |