会话超时后的Jquery .load()函数

时间:2017-05-26 12:36:11

标签: java jquery spring-mvc spring-security

问题: 我在页面上有一个按钮,用于激活JQuery脚本:

byte[] image = BufferedImage - from the same file; ClassifyImagesOptions options = new ClassifyImagesOptions.Builder() .images(image ) .build();

但是当我在会话过期后点击它时,我并没有被重定向到登录页面,而是在父页面内加载登录页面,这不是我需要的。

here is a screenshot:

安全配置:

function loadPage(elementId, typeId) {
    alert("loadPage/" + typeId);
    $("#" + elementId).load("loadPage/" + typeId);
}

登录控制器:

<http auto-config="true">
    <intercept-url pattern='/login' access='permitAll' />
    <intercept-url pattern='/**' access="hasRole('ROLE_ADMIN')"/>

    <form-login login-page="/login" authentication-failure-url="/login?error"
                default-target-url="/projects"
                username-parameter="email" password-parameter="password"/>
    <logout logout-success-url="/login?logout"/>
</http>

<security:authentication-manager id="authenticationManager">
    <security:authentication-provider user-service-ref="userServiceImpl">
        <!--<password-encoder ref="encoder"></password-encoder>-->
    </security:authentication-provider>
</security:authentication-manager>

现在我不知道如何应对它。如何将此行为更改为重定向到登录页面?

1 个答案:

答案 0 :(得分:0)

问题是,您尝试将内容加载到div或span中,登录页面是一个“整个”页面。

您可以通过js / jquery检查内容是否为登录页面,带有标记或其他内容,并在打开后重定向到登录页面。

添加类似

的内容
<!-- loginpageflag -->

进入您的登录页面并执行类似

的操作
function loadPage(elementId, typeId) {
    $.ajax({
        url: "loadPage/" + typeId, 
        type: "GET", 
        dataType: "html", 
        success: function (data) { 
            alert(data);
            if(data.indexOf("loginpageflag") > -1) { 
                window.location.replace("/login"); 
            } 
            var selection = $("#" + elementId); 
            selection.empty(); 
            selection.append(data); 
        }
    });
}