2012-08-28 34 views
0

我使用Spring安全性3.1和ExtJS作爲前端。 這是我的security-config.xml文件。ExtJS Spring安全性3.1返回JSON true或false

<security:http auto-config="true" use-expressions="true"> 
    <security:intercept-url pattern="/login.html" access="permitAll()" /> 
    <security:intercept-url pattern="/**.html" access="isAuthenticated()" /> 
    <security:form-login login-page="/login.html" 
     authentication-failure-url="/login.html" 
     default-target-url="/index.html" always-use-default-target="true"/> 
    <security:logout/> 

</security:http> 

我的ExtJS 4.0登錄控制器。

doLogin: function(formItem) { 
    var loadingMask = new Ext.LoadMask(Ext.getBody(), {msg:"Logging in..."}); 
    loadingMask.show(); 
    var lp = formItem.up('loginpanel'); 
    var form = lp.getForm(); 
    console.log(form); 
    form.submit({ 
     clientValidation: true, 
     method: 'POST', 
     url: "j_spring_security_check", 
     /* 
     params: { 
      newStatus: 'delivered' 
     }, 
     */ 

     success: function() { 
      loadingMask.destroy(); 
      window.location = '/index.html'; 
      Ext.Msg.alert('Success', action.result.msg); 
     }, 

     failure: function(form, action) { 
      form.reset(); 
      loadingMask.destroy(); 
      switch (action.failureType) { 
       case Ext.form.action.Action.CLIENT_INVALID: 
        Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values'); 
        break; 
       case Ext.form.action.Action.CONNECT_FAILURE: 
        Ext.Msg.alert('Failure', 'Ajax communication failed'); 
        break; 
       case Ext.form.action.Action.SERVER_INVALID: 
        Ext.Msg.alert('Failure', action.result.msg); 
      } 
     } 
    }); 

我的Spring登錄控制器。現在

public class LoginController { 

private static final Logger logger = LoggerFactory.getLogger(LoginController.class); 

@RequestMapping(value = "/login.html", method = RequestMethod.GET) 
public String login(Model model, @RequestParam(required=false) String message) { 
    model.addAttribute("message", message); 
    return "login"; 
} 

如果我點擊登錄按鈕的形式,它被重定向到index.html的,但在index.html的ExtJS的期待JSON字符串真的還是假的,它是扔我JSON錯誤。

Uncaught You're trying to decode an invalid JSON String: 

我開始知道AuthenticationProcessingFilter已被刪除。現在我需要通過登錄控制器返回成功真正的字符串。任何幫助,將不勝感激 。

回答

1

是的AuthenticationProcessingFilter已被刪除,但現在存在UsernamePasswordAuthenticationFilter。您可以關注this