1. #1
    Ensign
    Dabei seit
    Dez 2008
    Beiträge
    229

    [Java] Registrierung mit Spring Security

    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:

    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").
    auf
    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 vom 24.08.2013 18:15 Uhr: Das Fehlverhalten war in einer Dummbatzigkeit meinerseits begründet, derentwegen ich 4 Stunden im Kreis gelaufen bin.

    Kann geschlossen werden.

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Forum-Layout: Feste Breite / Flexible Breite