2012-07-19 92 views
3

我有index.gsp提供了一個頁面。在該頁面中有一個註冊按鈕和一個登錄按鈕。登錄後,如果登錄成功,應用程序會再次驅動您登錄到index.gsp。我需要,如果用戶登錄,這些按鈕消失,而是說「你好,[用戶名]」。我試過這個代碼,但它不工作(這是從來沒有登錄):如何知道用戶是否登錄(在GSP中)

在控制器:

def dologin(){ 

    def user=Usuario.findByUsernameAndPassword(params.username,springSecurityService.encodePassword(params.password)) 

    if(user){ 
     redirect (controller:'usuario', action:'index') 
    }else{ 

     flash.message=message(code:'default.user.not.found', args:[message(code: 'params.username', default:'Usuario'), params.id]) 
    def userlogged = springSecurityService.getCurrentUser() 
       render view: 'index', model: [user: user] 
} 

} 

在index.gsp中(不完全,只有一塊事項):

<sec:ifNotLoggedIn> 

<div id="buttons"> 
    <div id="login"><a href="loginurl">Login</a> 
    </div> 
    <div id="register"><a href="registerurl">Registrarse</a> 
    </div> 
</div> 
</sec:ifNotLoggedIn> 
<sec:ifLoggedIn> 

<div id="greet">Hello!</div> 

</sec:ifLoggedIn> 

任何幫助,將不勝感激。

謝謝。

回答

11

它看起來像你正在做自己的認證,而不是通過春季安全認證過程。 <sec:ifLoggedIn>標籤依靠處理認證的彈簧安全性。

這是在春季安全應用程序中處理的通常方式是將登錄請求發佈到/j_spring_security_check,後者在後臺被UsernamePasswordAuthenticationFilter過濾。

Grails和spring安全插件通過提供可用作起點的LoginControllerauth.gsp,使得它相對無痛。運行s2-quickstart腳本(該腳本還會創建用戶和角色域對象),或者僅從spring-security-core模板目錄複製它們。

+0

是否有'<秒:ifLoggedIn>的其他標籤'? – styl3r 2017-10-07 09:41:59

0

終於做到了簡單

<g:if test="${session.user==null}"> 
<!-- Display buttons--> 
</g:if> 
<g:if test=${session.user!=null"> 
    <div id="greet"> Hello, ${session.user.username}!</div> 
</g:if> 

更容易,我想。但是,謝謝你的回答,阿泰勒。

0

我想它只是

<sec:ifNotLoggedIn> // DO SOMTHING</sec:ifNotLoggedIn> 
<sec:ifLoggedIn> // DO SOMTHING</sec:ifNotLoggedIn> 
相關問題