inflearn logo
강의

Course

Instructor

Spring Framework in my hands [Spring 2]

56_스프2탄_Creating the Main Screen Menu

스프링 시큐리티 질문

1010

minhyeong

13 asked

0

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/

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/

로 접속하면

http://localhost:8080/m15/member/login

로 이동하면서 에러가 발생합니다.

 

 

 

스프링 부트 버전은 3.2.1입니다.

spring jquery mvc jpa spring-security

Answer 1

0

dongheon09167222

.formLogin(login ->

login .loginPage("/member/login")

.defaultSuccessUrl("/board/list")

)

 

이 부분을

 

.formLogin(login ->

login .loginPage("/member/login")

.defaultSuccessUrl("/board/list")

.permitAll()

)

 

이렇게, permitAll()을 추가하면 될 것 같습니다

1

minhyeong

답변 감사합니다. 스프링시큐리티 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