当未登录的用户单击包含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() { ... }

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

最佳答案

也许有比我现在更好的解决方案,但是我在过去遇到过这种情况,即当 session 过期时,ajax调用不调用spring安全性进行的普通重定向。我将contextPath分配给main.gsp中的javascript变量。这将使用户在 session 到期前5秒钟注销。

在main.gsp的 header 中,我有:

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

}

07-27 23:35