2016-06-09 5 views
1

Ich aktualisiere von Frühling 3.2 zu 4.1 und versuche, meine MVC-Konfiguration zu aktualisieren.Spring-MVC 3.2 zu 4.1 Aktualisierung: @RequestParam, das nicht bindet

Kurzversion: Ich kann bestätigen, dass die Anforderung der param sendet:

userId:USERNAME 
password:PASSWORD 
termsAccepted:true 

Inhaltstyp application/x-www-form-urlencoded ist.

Spring Security CSRF ist deaktiviert: <security:csrf disabled="true"/>

am XSD Sehen, heißt es meine eigene Methode Argument Resolvern nicht überschreiben die Standardeinstellungen:

<mvc:annotation-driven > 
    <mvc:argument-resolvers> 
     <bean class="org.jason.web.util.RetainUserHandlerMethodArgumentResolver"/> 
     <bean class="org.jason.web.util.ConversationArgumentResolver"/> 
    </mvc:argument-resolvers> 
    <mvc:message-converters> 
     <bean class="org.springframework.http.converter.FormHttpMessageConverter"/> 
     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

Kann jemand einen Einblick bieten?

Edit: Hier ist der Controller. Nichts besonderes hier.

@RequestMapping(value = "/login**") 
public ModelAndView login(@RequestParam(value = "error", required = false) String error, 
         @RequestParam(value = "logout", required = false) String logout, 
         @RequestParam(value = "submit", required = false) String submit, 
         @RequestParam(value = "userId", required = false) String userId, 
         @RequestParam(value = "password", required = false) String password, 
         @RequestParam(value = "returnView", required = false) String returnView, 
         HttpServletRequest request, 
         HttpSession session 
    ) { 
    // login log. Return a Spring ModelAndView based on success/failure. 
} 
+0

Erweitern Sie die richtige Klasse/implementieren Sie die richtige Schnittstelle für die benutzerdefinierten Argument Resolver? Wie sich das von älteren Versionen geändert hat (obwohl ich annehme, dass Sie letztendlich 'HandlerMethodArgumentResolver' verwendet haben.). Kannst du deine komplette Konfiguration und vielleicht auch deinen Controller posten? Machst du auch Code-Upgrades oder nur ein Framework-Upgrade? (Es sollte mehr oder weniger ein Ersatztropfen sein). –

+0

Ja, meine Kundenresolver implementieren HandlerMethodArgumentResolver. Sollte das Binden von Request-Parametern an Controller-Methoden-Parameter nicht durch einen eingebauten Konverter erfolgen, den ich nicht explizit definieren muss? Ich habe nicht viel in der Art von Code-Updates, meist Konfigurationsdateien getan. – Jason

+0

Es ist auch nur eine Warnung von Ihrer IDE, funktioniert Ihr Code tatsächlich? Die Tatsache, dass Sie eine Warnung in Ihrer IDE haben, bedeutet nichts. Es überschreibt sie in der Tat nicht, es ergänzt sie. –

Antwort

2

Als Teil Ihres Upgrades haben Sie auch Spring Security auf 4.1 aktualisiert. Zwischen 3.2 und 4.x hat sich die Standard-Login-URL für /j_spring_security_check zu /login geändert. (Siehe https://github.com/spring-projects/spring-security/issues/3010).

Jetzt verarbeitet Spring Security Anfragen an /login und Ihr Controller erhält schließlich die Umleitung aufgrund eines Authentifizierungsfehlers (der die ursprünglichen Parameter nicht enthält, da es sich um eine neue leere Anforderung handelt).

+0

Das hat es geschafft, danke! Ich habe die Zuordnung meines benutzerdefinierten Login-Controllers geändert und es hat funktioniert. – Jason

Verwandte Themen