2015-08-16 50 views
0

首先感謝您閱讀這篇文章。這裏有一個基本的介紹。 我已經在play 2.4文檔中實現了簡單認證演示。 這裏是我使用它的方法。Play Framework 2.4。試着改變基於主模板的用戶登錄狀態

@Security.Authenticated(Secured.class) 
public Result reviewSubmit(){ 
    //Review newReview = contactFormData.get(); 
    //newReview.save(); 
    Form<Review> reviewFormData = reviewForm.bindFromRequest(); 
    User user = User.findByEmail(request().username()); 

    if(reviewFormData.hasErrors()) { 
      return badRequest("Form Field has Errors" +reviewFormData); 
     } 
    Review newReview =reviewFormData.get(); 
    newReview.user = user.fName +" " + user.lName; 
    newReview.save(); 
    return redirect(routes.Reviews.review()); 

} 

,你可以看到作爲審查保存過程的一部分,我用

User user = User.findByEmail(request().username()); 

請求()。用戶名()獲取當前登錄的用戶的電子郵件地址 從我用它來尋找當我去保存審查對象時,用戶和訪問那裏的名字和姓氏。

什麼,我想知道的是在那裏,我可以使用

if(request.username() == null){ 
    //Show login Button 
}else{ 
    //show Logout button 
} 

裏面說main.scala.html模板改變主模板的一種簡單的方法,而不從每過一個用戶對象的方式行動。

感謝您提供的任何幫助或指針。 NB,因爲我是新玩,並真的很難理解SECURESCOILI插件/ deadbolt/play-authenticate我只是想要一種模糊的方式顯示的鏈接

回答

0

不知道如果我回答你的問題,但爲什麼你不能做這樣的事情

@if(user) { 
    <button>LogOut</button> 
} else { 
    //login button 
} 

在您的模板。

將用戶傳遞到模板中,如documentation中給出的那樣。

+0

但是,然後id必須傳遞整個應用程序中的每個操作的用戶信息否? – TomMurphyDev

+0

我的壞我有我的每個控制器擴展控制器,而不是原來的應用程序控制器,並提出這個建議一個考驗。謝謝你的幫助。 – TomMurphyDev