Hier ist meine WebAppInitializer:Spring Security/j_spring_security_check nicht gefunden 404
@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[] { "/" };
}
}
Hier ist meine 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
}
}
Und das ist mein login.html (Beispiel html von 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>
Wenn ich bei der Anmeldung klicken, diese Fehler angezeigt:
HTTP ERROR 404
Problem accessing /j_spring_security_check. Reason:
Not Found
Wie kann ich diesen Fehler loswerden? Ich habe viel gegoogelt, aber noch keinen Erfolg. (Ja ich benutze keine xml.)
Alternative zu den oben genannten ist, den Filter programmgesteuert zu initialisieren. IE: FilterRegistration.Dynamic springSecurityFilterChain = container.addFilter ("springSecurityFilterChain", DelegatingFilterProxy.class); springSecurityFilterChain.addMappingForUrlPatterns (null, false, "/ *"); Für mich ist dieser Ansatz sinnvoller oder Sie könnten ihn Ihrer XML-Anwendung hinzufügen. Das Gleiche, eine leere Klasse zu haben, scheint einfach falsch zu sein und wird wahrscheinlich in der Zukunft gelöscht werden, wenn sie nicht kommentiert wird, weil keine Referenzen existieren. –