7. Spring Security로 인가 권한 추가하기
p162
SecurityConfigSec
package io.securitylecture.springsecuritylecture.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.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;
@EnableWebSecurity
@Configuration
public class SecurityConfigSec {
//암호화 Bean 추가
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
//경로별 권한 추가(인가)
http
.authorizeHttpRequests((auth) -> auth
.requestMatchers("/", "/login").permitAll()
.requestMatchers("/admin").hasRole("ADMIN")
.requestMatchers("my/**").hasAnyRole("ADMIN","USER")
.anyRequest().authenticated()
);
//로그인 페이지로 이동시키기
http
.formLogin((auth) -> auth.loginPage("/login") //리다이렉션할 경로 설정
.loginProcessingUrl("/loginProc") //로그인데이터를 넘길 경로 (html에서 post하는 경로)
.permitAll()
);
//개발용 csrf 설정 해제
http
.csrf((auth) -> auth.disable());
return http.build();
}
}
Last updated