2012-11-13 66 views
1

一個remoteFunction當誰不是在點擊登錄包含類似remoteFunction一個鏈接上的用戶:一個動作春季安全如何重定向到登錄,同時調用Grails的

<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() { ... } 

我怎樣才能將用戶重定向到登錄頁面,如果他沒有登錄?

回答

0

也許有比我現在有一個更好的解決辦法,但我遇到了,在過去,在Ajax調用不正常調用重定向當會話過期春天的安全呢。我將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" 

} 
+0

你能解釋一下更詳細的?當註銷用戶嘗試訪問上面的鏈接安全網頁JavaScript函數updateBookCount(數據,textStatus)將得到一個錯誤,我猜。我該如何處理它? – confile

+0

他們將在他們的會話時間被重定向到註銷頁面出來。所以這絕不會發生(如果他們有腳本打開)。 –

+0

我想的是,用戶會被重定向到登錄頁面,如果他沒有登錄,並試圖在阿賈克斯訪問受保護的功能。我怎樣才能做到這一點? – confile