2016-03-29 5 views
0

Ich habe eine Webapp und ich benutze Spring Security. Ich habe meine Spring Security configure Funktion in security.config als:Spring Security.config - kann Login-Seite nicht funktionieren

@Override 
protected void configure(HttpSecurity http) throws Exception { 

    http 
     .csrf().disable() 
     .authorizeRequests() 
      .antMatchers("/static/**").permitAll() 
      .antMatchers("/settings/api/**").permitAll() 
      .antMatchers("/api/**").permitAll() 
      .anyRequest().authenticated() 
     .and() 
     .formLogin() 
      .loginPage("/login").permitAll() 
      .defaultSuccessUrl("/", true); 
} 

Das Problem, das ich habe, ist dies immer zu @RequestMapping(value="/login", method=RequestMethod.GET) abgebildet wird statt @RequestMapping(value="/login", method=RequestMethod.POST). Also, wann immer ich versuche, Benutzername und Passwort von HTTP-Anfrage abzurufen, kommt es als null. Wie bekomme ich es auf POST Methode zu mappen?

Ich habe meinen Post-Controller als

@RequestMapping(value="/login", method=RequestMethod.POST) 
public String login(HttpServletRequest request, HttpServletResponse response) { 
    String username = request.getParameter("username"); 
    String password = request.getParameter("password"); 
    boolean f = false; 
    f = customAuthenticationProvider.verifyUser(username,password,request); 
    if(f == false) 
     return "loginError"; 
    else 
     return "index"; 
} 

Antwort

0

mit formlogin() Sie nicht über die POST-Controller zur Verfügung stellen müssen, dass auf dem UsernamePasswordAuthenticationFilter durch Feder gesorgt hat wird. Was Sie konfigurieren, ist nur die loginPage ("/ login"), auf der Sie ein Formular mit einer POST-Aktion zu "/ login" hinzufügen und Benutzernamen und Passworteingaben hinzufügen müssen.

Etwas wie folgt aus:

<form action="login" method="post"> 
    <div> 
     <label for="username">Username:</label> 
     <input type="text" class="form-control" id="username" name="username"/> 
    </div> 
    <div> 
     <label for="password">Password:</label> 
     <input type="password" class="form-control" id="password" name="password"/> 
    </div> 
    <button type="submit">Submit</button> 
</form> 
+0

Habe ich nur noch meine Post-Controller wie man sehen kann ich aus einer Funktion nenne im Inneren, dass ich denke also nicht, was Sie arbeiten wird vorgeschlagen. Ich bin sehr neu zu diesem so jede Hilfe wäre nett. Danke –

+0

Es funktioniert, wie ich Ihnen sagen, überprüfen Sie dies: http://docs.spring.io/spring-security/site/docs/3.2.x/guides/ form.html – Ulises

+0

Danke. Es funktioniert aber nicht. Vielleicht habe ich irgendwo anders ein Problem. Ich werde aktualisieren, sobald ich es finde. –

Verwandte Themen