2010-11-15 88 views
2

我正在使用Grails Spring Security Core Plugin來使用以下注釋來確保某個操作的安全。Grails Spring Security Core Plugin - 向登錄頁面添加Flash消息

@Secured(['IS_AUTHENTICATED_REMEMBERED']) 

這會導致重定向到我的登錄頁面,如果用戶沒有登錄的操作。一旦他們登錄然後它們重定向到原來的動作。

我怎麼能在這種情況下添加Flash消息到登錄頁面,即

flash.message = "You must be logged in to submit a news story" 

爲了澄清,我只是想顯示的消息,如果用戶試圖後重定向到登錄頁面訪問此特定操作。其他操作不會觸發該消息。

回答

3

我已經解決了這個如下。

  1. 遠離操作的註釋。
  2. 在動作開始時添加以下代碼(新聞並分別作爲相關控制器和動作提交)。

    if (!springSecurityService.isLoggedIn()) { 
        flash.message = "You must be logged in to submit a news story." 
        redirect(controller:"login", action: "auth", params:["spring-security-redirect" : "/news/submit"]) 
    } 
    
  3. 將以下內容添加到登錄表單中。

    <input type='hidden' name='spring-security-redirect' value='${params['spring-security-redirect']}'/> 
    
+0

良好的解決方法。能夠在註釋中做到這一點是很好的,看起來像是一個非常常見的用例 – Peter 2012-01-09 23:45:09

2

添加,例如,這對您的登錄視圖:

<sec:noAccess url="/admin/listUsers"> 
    You must be logged in to view the list of users. 
</sec:noAccess> 

security taglib's documentation

+0

謝謝。但是,這不會像我所需要的那樣工作,因爲如果用戶嘗試訪問特定操作,我只希望顯示該消息。我已經重新提出了我的問題來澄清這一點,因爲我可以看到它不明確。 – William 2010-11-15 17:12:16

相關問題