스프링 시큐리티 질문
1010
投稿した質問数 13
package kr.bit.config;
import org.springframework.beans.factory.annotation.Autowired;
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.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration //스프링 컨테이너 설정파일이라고 메모리에 올림
@EnableWebSecurity
public class SecurityConfiguration {
@Autowired
private UserDetailsServiceImpl userDetailsService;
//패스워드 인코딩 객체를 스프링 컨테이너에 등록
@Bean
public PasswordEncoder PasswordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrfConfig ->
csrfConfig.disable()
)
.authorizeHttpRequests(authorizeRequests -> authorizeRequests
.anyRequest().permitAll()
)
.formLogin(login -> login
.loginPage("/member/login")
.defaultSuccessUrl("/board/list")
)
.logout(logout -> logout
.logoutUrl("/member/logout")
.logoutSuccessUrl("/")
)
.userDetailsService(userDetailsService);
return http.build();
}
}
모든 접근에 대해 permitAll()을 하면
http://localhost:8080/m15/member/login
둘다 잘 접속 되지만
package kr.bit.config;
import org.springframework.beans.factory.annotation.Autowired;
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.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration //스프링 컨테이너 설정파일이라고 메모리에 올림
@EnableWebSecurity
public class SecurityConfiguration {
@Autowired
private UserDetailsServiceImpl userDetailsService;
//패스워드 인코딩 객체를 스프링 컨테이너에 등록
@Bean
public PasswordEncoder PasswordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrfConfig ->
csrfConfig.disable()
)
.authorizeHttpRequests(authorizeRequests -> authorizeRequests
.requestMatchers("/", "/member/**").permitAll()
.requestMatchers("/board/**").authenticated()
)
.formLogin(login -> login
.loginPage("/member/login")
.defaultSuccessUrl("/board/list")
)
.logout(logout -> logout
.logoutUrl("/member/logout")
.logoutSuccessUrl("/")
)
.userDetailsService(userDetailsService);
return http.build();
}
}
requestMatchers 로 permitAll()하면
로 접속하면
http://localhost:8080/m15/member/login
로 이동하면서 에러가 발생합니다.

스프링 부트 버전은 3.2.1입니다.
回答 1
0
.formLogin(login ->
login .loginPage("/member/login")
.defaultSuccessUrl("/board/list")
)
이 부분을
.formLogin(login ->
login .loginPage("/member/login")
.defaultSuccessUrl("/board/list")
.permitAll()
)
이렇게, permitAll()을 추가하면 될 것 같습니다
1
답변 감사합니다. 스프링시큐리티 6부터는 forward에도 기본으로 인증이 걸리게 되어서
.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll()를 추가해야한다고 하네요.
package kr.bit.config;
import org.springframework.beans.factory.annotation.Autowired;
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.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import jakarta.servlet.DispatcherType;
@Configuration
public class SecurityConfiguration {
@Autowired
private UserDetailsServiceImpl userDetailsService;
@Bean
public PasswordEncoder PasswordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(csrfConfig ->
csrfConfig.disable()
)
.authorizeHttpRequests (authorizeRequests -> authorizeRequests
.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll()
.requestMatchers("/", "/member/**", "/resources/**").permitAll()
.requestMatchers("/board/**").authenticated()
)
.formLogin(login -> login
.loginPage("/member/login")
.defaultSuccessUrl("/board/list")
)
.logout(logout -> logout
.logoutUrl("/member/logout")
.logoutSuccessUrl("/")
)
.userDetailsService(userDetailsService);
return http.build();
}
}
junit Test에서 오류는 나지 않지만 결과가 다르게 나오네요
0
200
2
API키 관리 궁금해요.
0
257
2
SpringMvc 프로젝트가 없는 상태로 작업 중인데 처음부터 막힙니다..
0
148
2
namespace
1
192
1
안녕하세요 강의내용을 복습하다가 질문이 생겼습니다
0
267
1
안녕하세요. spring boot 에서 하는중인데 질문 드립니다.!
0
265
1
spring Legacy Project에서 MVC 프로젝트가 없습니다. 어떻게 해야하나요?
0
1538
1
idx, boardGroup 번호에 대해
0
181
1
깃허브 주소를 못 찾겠어요
0
271
1
강사님 감사 인사 드리러 왔습니다.
1
390
1
com.mysql
0
269
2
pom.xml의 dependencies 관련 질문
0
269
2
혹시 마프는 언제 오픈 되나요?
0
375
2
스프링부트
0
297
1
섹션 01 8강 질문입니다
0
237
1
스프2탄 PPT파일은 없나요?
0
527
1
안녕하세요 답변 에러가 납니다.,
0
381
1
강사님 질문입니다!
0
426
2
다음 강의 또 언제 나오나요
0
589
2
다음강의 예정 사라지셨나요?
0
728
1
선생님 api와 인터페이스가 잘 이해가 가지 않는데요..
1
415
2
선생님 강의 문의 드릴 게 있는데요~!
0
330
1
수업자료 다운로드 위치가 안보입니다 ㅠㅠ
0
284
1
33강 완강기준 list -> get -> list -> 페이지이동 오류 해결법
1
571
1


