-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
스프링 시큐리티 ignoring() "/favicon.ico" 리다이렉션 질문
21.03.01 11:12 작성 조회수 620
0
안녕하세요, 스프링 시큐리티 ignoring() 1부 강의를 듣던 중, 백기선님이 구동한 웹 애플리케이션 결과와 제 결과와 달라서 질문을 드립니다.
해당 강의에서 SecurityConfig 파일의 config(WebSecurity web) 메서드를 오버라이딩해서 "/favicon.ico"와 같은 경로의 요청들을 무시하도록 설정하여 루트 요청을 하면 "/login" 요청이 더이상 필요하지 않게끔 하셨는데요,
저도 강의에서 하신대로 똑같이 설정을 하였는데도, 여전히 "/", "favicon.ico", "/login" 이렇게 3가지 요청이 수행됩니다. "/favicon.ico" 요청 응답 코드는 302이구요.
아래는 제 SecurityConfig 자바 파일입니다. 어느 부분이 달라서 그런 것 인가요?
package me.whiteship.demospringsecurityform.config;
import me.whiteship.demospringsecurityform.account.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.access.AccessDecisionManager;
import org.springframework.security.access.AccessDecisionVoter;
import org.springframework.security.access.expression.SecurityExpressionHandler;
import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl;
import org.springframework.security.access.vote.AffirmativeBased;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler;
import org.springframework.security.web.access.expression.WebExpressionVoter;
import java.util.Arrays;
import java.util.List;
import java.util.zip.DataFormatException;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
public SecurityExpressionHandler expressionHandler() {
RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_USER");
DefaultWebSecurityExpressionHandler handler = new DefaultWebSecurityExpressionHandler();
handler.setRoleHierarchy(roleHierarchy);
return handler;
}
@Override
public void configure(WebSecurity web) throws Exception {
// web.ignoring().mvcMatchers("/favicon.ico");
web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.mvcMatchers("/", "/info", "/account/**").permitAll()
.mvcMatchers("/admin").hasRole("ADMIN")
.mvcMatchers("/user").hasRole("USER")
.anyRequest().authenticated()
.expressionHandler(expressionHandler());
http.formLogin();
http.httpBasic();
}
}
답변을 작성해보세요.
0
백기선
지식공유자2021.03.03
시큐리티 설정은 정상적으로 보이네요. 애플리케이션 구동을 종료하고 다시 실행해도 같은 문제가 반복되나요?
문제가 재현되는 코드를 깃헙에 올려서 공유해주시면 좀 더 살펴보겠습니다.
답변 1