mental.dIseASe
Lieutenant
- Registriert
- Dez. 2008
- Beiträge
- 669
Heyho Mitmenschen,
ich soll hier was mit Spring Security umsetzen, scheitere aber irgendwie schon ganz am Anfang. Konkret geht es um eine Art Nutzerregistrierung. Das Problem ist, dass ich zwar in mein Registrierungsformular komme, aber nicht in den korrespondierenden POST-Handler im Controller. Stattdessen wird der Request wohl intercepted und ich fliege wieder auf meine Login-Page.
Meine Security-Config sieht wie folgt aus:
Mein UserController sieht -in Auschnitten- so aus:
Das Kuriose daran ist jetzt, dass ich in den POST-Handler komme, wenn ich folgende Umstellung in der SecurityConfig vornehme:
auf
Dabei sollte der Filter doch, wie es beim GET-Request ja auch funktioniert, bereits in Zeile 9 antMatchers("/user/register").permitAll() der Config anschlagen und mich "hereinlassen". In diesem Controller sind noch andere Handler für /user-Kram und ich sehe nicht ein, die irgendwo anders hinzuschieben und den ganzen /user/**-Baum auf permitAll() zu machen. Kann sich jemand darauf einen Reim machen?
Das Fehlverhalten war in einer Dummbatzigkeit meinerseits begründet, derentwegen ich 4 Stunden im Kreis gelaufen bin.
Kann geschlossen werden.
ich soll hier was mit Spring Security umsetzen, scheitere aber irgendwie schon ganz am Anfang. Konkret geht es um eine Art Nutzerregistrierung. Das Problem ist, dass ich zwar in mein Registrierungsformular komme, aber nicht in den korrespondierenden POST-Handler im Controller. Stattdessen wird der Request wohl intercepted und ich fliege wieder auf meine Login-Page.
Meine Security-Config sieht wie folgt aus:
Code:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.
authorizeUrls().
antMatchers("/login").permitAll().
antMatchers("/logout").permitAll().
antMatchers("/denied").permitAll().
antMatchers("/").hasRole("USER").
antMatchers("/user/register").permitAll().
antMatchers("/user/**").hasRole("ADMIN").
antMatchers("/feedback/**").hasRole("USER").
and().
formLogin().
loginUrl("/login").
failureUrl("/login/failure").
defaultSuccessUrl("/", true).
usernameParameter("username").
passwordParameter("password").
permitAll().
and().
exceptionHandling().
accessDeniedPage("/denied").
and().
logout().
invalidateHttpSession(true).
logoutSuccessUrl("/logout/success").
logoutUrl("/logout").
permitAll();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
Mein UserController sieht -in Auschnitten- so aus:
Code:
@Controller
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register(Model model) {
User user = new User();
model.addAttribute(user);
return "register";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(User user, BindingResult result) {
System.out.println("Heyho");
/*if (result.hasErrors()) {
return "register";
}*/
return "/";
}
}
Das Kuriose daran ist jetzt, dass ich in den POST-Handler komme, wenn ich folgende Umstellung in der SecurityConfig vornehme:
Code:
antMatchers("/user/**").hasRole("USER").
Code:
antMatchers("/user/**").permitAll().
Dabei sollte der Filter doch, wie es beim GET-Request ja auch funktioniert, bereits in Zeile 9 antMatchers("/user/register").permitAll() der Config anschlagen und mich "hereinlassen". In diesem Controller sind noch andere Handler für /user-Kram und ich sehe nicht ein, die irgendwo anders hinzuschieben und den ganzen /user/**-Baum auf permitAll() zu machen. Kann sich jemand darauf einen Reim machen?
Ergänzung ()
Das Fehlverhalten war in einer Dummbatzigkeit meinerseits begründet, derentwegen ich 4 Stunden im Kreis gelaufen bin.
Kann geschlossen werden.