【问题标题】:Jquery .load() function after session time out会话超时后的 Jquery .load() 函数
【发布时间】:2017-10-27 08:40:03
【问题描述】:

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

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

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

here is a screenshot:

安全配置:

<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>

登录控制器:

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginPage() {
    return "login";
}

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

【问题讨论】:

  • 您需要检查会话是否已结束,如果已结束则重定向到登录页面。否则它只会继续将登录页面加载到#id中。如果会话返回错误代码,您可以使用它。
  • @Anuga ,是的,我正在考虑在 .load() 之前进行检查,但我还不知道该怎么做。将在这方面提供任何帮助
  • 你没有会话cookie吗?你应该有?你可以检查一下,如果它仍然“活跃”,你可以运行这个函数。

标签: java jquery spring-mvc spring-security


【解决方案1】:

问题是,您尝试将内容加载到 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); 
        }
    });
}

【讨论】:

  • 是的,我明白这个问题。如果我仍然登录,你知道是否可以在 .load() 函数之前检查?通过 js 或以某种方式...
  • 我也在我的答案中加入了一些代码.. 像上面这样的东西应该做:)
  • 奇怪,但每次索引都是-1。 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;title&gt;Login&lt;/title&gt; &lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- loginPageFlag --&gt;。可能没有考虑注释行。现在我把标志放在隐藏的
    里面。会看到..
  • 看看.. 在这里它就像一个魅力:jsfiddle.net/ujj5u6h5/2
  • 我最终得到以下代码:function loadPage(elementId, typeId) { $.ajax({ url: "loadPage/" + typeId, type: "GET", dataType: "html", success: function (data) { alert(data); if(data.indexOf("loginpageflag") &gt; -1){ window.location.replace("/login"); } var selection = $("#" + elementId); selection.empty(); selection.append(data); } }) }
猜你喜欢
相关资源
最近更新 更多
热门标签