1

当未登录的用户单击包含 remoteFunction 的链接时,例如:

    <a href="#" onclick="${remoteFunction(
           controller: 'book',
           action: 'count',
        id: book.id,
        onSuccess: 'updateBookCount(data,textStatus);'
        )}">
        add count to book
        </a>

对于一个动作:

@Secured("ROLE_USER")
def count() { ... }

如果用户未登录,如何将用户重定向到登录页面?

4

1 回答 1

0

也许有比我目前拥有的更好的解决方案,但我过去遇到过这种情况,ajax 调用不会调用 spring 安全性在会话过期时执行的正常重定向。我将 contextPath 分配给 main.gsp 中的 javascript 变量。这将在会话到期前 5 秒将用户注销。

在标题的 main.gsp 中,我有:

<script type="text/javascript">
    var contextPath = "${contextPath}";
    var maxTimeout = ${session.getMaxInactiveInterval()};
</script>

在我的 main.js 中,我有:

if ( contextPath + "/" != window.location.pathname )
{
    setInterval('checkTimeOut()', 1000 );
}

function checkTimeOut()
{
    maxTimeout -= 1;
    if (maxTimeout <= 5)
        window.location = contextPath+"/logout"

}
于 2012-11-13T14:04:20.463 回答