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