[SPRING] 스프링 보안 / j_spring_security_check을 찾을 수 없음 404
SPRING스프링 보안 / j_spring_security_check을 찾을 수 없음 404
다음은 내 WebAppInitializer입니다.
@Configuration
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { AppConfig.class, WebSecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
다음은 내 Security Config입니다.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http.authorizeRequests()
.antMatchers("/signup", "/about").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").defaultSuccessUrl("/home").failureUrl("/error").permitAll()
.and().httpBasic();
// @formatter:on
}
}
그리고 이것은 login.html입니다 (예 : html from thymeleaf).
<form th:action="@{/j_spring_security_check}" method="post">
<label for="j_username">Username</label>:
<input type="text" id="j_username" name="j_username" /> <br />
<label for="j_password">Password</label>:
<input type="password" id="j_password" name="j_password" /> <br />
<input type="submit" value="Log in" />
</form>
로그인을 클릭하면이 오류가 나타납니다.
HTTP ERROR 404
Problem accessing /j_spring_security_check. Reason:
Not Found
이 오류를 제거하려면 어떻게해야합니까? 나는 많은 것을 봤지만 아직 성공하지는 못했다. (네, XML을 사용하지 않습니다.)
해결법
-
==============================
1.스프링 4.X를 사용하고 있다면 버전 문제 일 수 있습니다.
스프링 4.X를 사용하고 있다면 버전 문제 일 수 있습니다.
어디에서와 같이 봄 3.X
-
==============================
2.나는 이것을 만들었고 지금은 효과가있다.
나는 이것을 만들었고 지금은 효과가있다.
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
이것은 SpringSecurityFilterChain을 활성화합니다.
CSRF 오류 때문에 @EnableWebSecurity에서 @EnableWebMvcSecurity로 전환해야했습니다. 봄철 문서가 쓰여지는 것처럼 :
또한 그의 설명에 대해 M. Deinum에게 감사드립니다. Spring은 최근에 / j_spring_security_check / j_password / j_username을 / login / password / username으로 변경했습니다.
-
==============================
3.또한 csrf를 비활성화 할 때이 문제에 직면했습니다. 명시 적으로 loginProcessingUrl을 지정하려고 시도했지만 완벽하게 작동했습니다!
또한 csrf를 비활성화 할 때이 문제에 직면했습니다. 명시 적으로 loginProcessingUrl을 지정하려고 시도했지만 완벽하게 작동했습니다!
@Override protected void configure(HttpSecurity httpSecurity) throws Exception { httpSecurity.csrf().disable(); httpSecurity.formLogin().loginProcessingUrl("/login-url"); }
주의 사항 :
My Spring Security 버전은 4.0.3입니다.
P / S : 내 대답은 질문과 직접적으로 관련이 없을 수도 있지만 스프링 보안에 익숙하지 않은 사람을 도와 줄 수 있다고 생각합니다.
from https://stackoverflow.com/questions/27469834/spring-security-j-spring-security-check-not-found-404 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Security는 인증 된 사용자 및 인증되지 않은 사용자를 위해, 휴식 서비스에서 사용자 정보를 얻습니다. (0) | 2019.02.11 |
---|---|
[SPRING] Spring MVC : Error 400 클라이언트가 보낸 요청의 구문이 올바르지 않습니다. (0) | 2019.02.11 |
[SPRING] 스프링 데이터 JPA : 모델을 우아하게 업데이트하는 방법은 무엇입니까? (0) | 2019.02.11 |
[SPRING] JPA가 트랜잭션을 롤백하는 것을 방지하는 방법은 무엇입니까? (0) | 2019.02.11 |
[SPRING] javacfig에서 'springSecurityFilterChain'이라는 Bean이 정의되지 않았습니다. (0) | 2019.02.11 |