0

ExtJS をフロントエンドとして Spring security 3.1 を使用しています。これが私の security-config.xml ファイルです。

<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 にリダイレクトされますが、ExtJs の index.html は JSON 文字列 true または false を想定しており、JSON エラーがスローされます。

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

AuthenticationProcessingFilter が削除されたことを知りました。ここで、ログイン コントローラーを介して成功の真の文字列を返す必要があります。助けていただければ幸いです。

4

1 に答える 1

1

はいAuthenticationProcessingFilterは削除されましたが、現在は存在していますUsernamePasswordAuthenticationFilterこれに従うことができます。

于 2012-08-28T18:39:45.950 に答える