스프링 보안에서 CSS 또는 JS 리소스를 로드할 수 없음
리소스는 src/main/resource/static/css 또는 src/main/resources/static/js 아래에 있으며 spring boot을 사용하고 있으며 보안 등급은 다음과 같습니다.
@Configuration
@EnableWebMvcSecurity
@EnableGlobalAuthentication
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// http.authorizeRequests().antMatchers("/", "/index", "/quizStart")
// .permitAll().anyRequest().authenticated();
// http.formLogin().loginPage("/login").permitAll().and().logout()
// .permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("test").password("test")
.roles("USER");
}
}
브라우저에서 "/index"에 액세스하면 잘 작동하지만(리소스를 로드할 수 있음) 클래스의 네 줄에 대한 설명을 해제하면 리소스를 로드할 수 없습니다. 네 줄은 다음을 의미합니다.
http.authorizeRequests().antMatchers("/", "/index", "/quizStart")
.permitAll().anyRequest().authenticated();
http.formLogin().loginPage("/login").permitAll().and().logout()
.permitAll();
누가 이것을 도와줄 수 있습니까?미리 감사드립니다.
해당 항목이 들어 있는 디렉토리를 permitAll로 설정해야 합니다.
여기 제 봄 보안 컨텍스트 파일에서 발췌한 내용이 있습니다.자원 디렉토리 아래에는 js, css, 이미지 폴더가 있으며 이 줄로 권한이 주어집니다.
<security:intercept-url pattern="/resources/**" access="permitAll" />
어떤 이유에서인지, 이것은 저에게 효과가 없었습니다.
http.authorizeRequests().antMatchers("/resources/**").permitAll();
다음 사항을 추가해야 했습니다.
http.authorizeRequests().antMatchers("/resources/**").permitAll().anyRequest().permitAll();
또한 이 줄은 액세스를 리스트릭하는 코드 뒤에 있어야 합니다.
다음을 추가합니다.
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**").anyRequest();
}
특정 파일의 경우 "/*.js" 또는 디렉토리의 경우 "/resources/**"와 같이 직접 사용할 수도 있습니다.
http.authorizeRequests()
.antMatchers("/", "/login", "/logout", "/error").permitAll()
.antMatchers("/resources/**").permitAll()
.antMatchers("/*.js").permitAll()
.antMatchers("/api/**").authenticated()
저도 같은 문제가 있었는데요.permitAll()
해결책이 제게 효과가 없었습니다.다음 사항을 추가했습니다.@Override
나에게 방법WebSecurityConfig
학급.
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**", "/static/**", "/css/**", "/js/**", "/img/**", "/icon/**");
}
행운을 빕니다.
저도 같은 문제가 있었는데 "permitAll"로 접속을 변경하는 것은 도움이 되지 않았습니다.보안을 "none"으로 설정하고 인증 없이 css와 js 파일을 다운로드할 수 있는 새로운 http 패턴을 만들었습니다.
<http pattern="/resources/**" security="none" />
드디어 효과가 있었어요./home(로그인 페이지가 표시됨) 및 오류 메시지는 인증할 필요가 없습니다.모든 리소스가 permitAll이고 /main url이 인증됩니다.기타 URL(예: /users/customers 등))을 인증됨() 그대로 추가해야 합니다.
<security:intercept-url pattern="/home" access="isAnonymous()"/>
<security:intercept-url pattern="/error*" access="isAnonymous()"/>
<security:intercept-url pattern="/main" access="isAuthenticated()"/>
<security:intercept-url pattern="/css/**" access="permitAll" />
<security:intercept-url pattern="/js/**" access="permitAll" />
<security:intercept-url pattern="/fonts/**" access="permitAll" />
<security:intercept-url pattern="/images/**" access="permitAll" />
.antMatchers("/.js", "/.css").permitAll()
언급URL : https://stackoverflow.com/questions/25368535/spring-security-does-not-allow-css-or-js-resources-to-be-loaded
'programing' 카테고리의 다른 글
한 열의 값이 서로 다른 가장 최근의 레코드 3개를 선택합니다. (0) | 2023.10.02 |
---|---|
jQuery 하이라이트 테이블 행 (0) | 2023.10.02 |
부트스트랩 3.0 팝오버 및 툴팁 (0) | 2023.10.02 |
.NET에서 개체를 UTF-8 XML로 직렬화 (0) | 2023.10.02 |
약한 심볼을 덮어쓰기 위해 정적 라이브러리에서 gcc 링크 강한 심볼을 만드는 방법? (0) | 2023.10.02 |