2012-08-28 36 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