2013-11-09 2 views
0

재생 프레임 워크 및 템플릿 엔진으로 웹 사이트를 만들고있어. 모든 로그인 할 때 등록 링크는 여전히 볼 수 있다는 사실에 만족 메신저를 제외하고 잘 작동합니다.Play Framework 템플릿 엔진을 사용하여 인증 된 링크 숨기기

<div class="topbar"> 
    <div class="fill"> 
     <div class="container"> 
      <a class="brand" href="@routes.Application.index()">L8</a> 
      <ul class="nav"> 
       <li><a href="@routes.RegisterForm.register()">Register</a></li> 
       <li><a href="@routes.Terms.terms()">ToS</a></li> 
      </ul> 
     </div> 
    </div> 
</div> 

내가 당신이 원하는 의심

답변

0

를 인증 할 때 탐색 모음에서 링크를 숨기려면 어떤 방법이 있나요 모든 권한 부여를 직접 구현할 수 있습니다. Play 용 사용자 Deadbolt 모듈을 권하고 싶습니다 : https://github.com/schaloner/deadbolt-2. 그것은 필요한 모든 기능을 가지고 있습니다.

0

구체적인 솔루션은 물론 특정 인증 솔루션에 따라 다릅니다. 하지만 기본적으로 사용자가 로그인했는지 여부를 알려주는 도우미 클래스/개체의 일부 기능을 사용할 수 있으며이 정보에 따라 레지스터 링크를 표시 할 수 있는지 여부를 결정할 수 있습니다.

@ShopsController.loggedInUser.map { username => 
    Logged in user: @username 
}.getOrElse { 
    <a href="...">Login</a> 
} 

그리고 ShopsController (다른 도우미 개체 수) 각각 내 경우에 ShopsSecurity trait을 (확장을 : 당신이 this template checking if the user is logged in에서 볼 수 있듯이 나는, 이런 식으로 일을했던 플레이 데모를 들어

ShopsController) checks if the user is logged in and if so retrieves the username는 :

def loggedInUser(implicit request: Request[_]): Option[String] = request match { 
    case authReq: Security.AuthenticatedRequest[_, _] => Some(authReq.user.asInstanceOf[String]) 
    case _ => None 
} 

이 검사는 분명히 Play의 Security.AuthenticatedRequest 내장에 기초 구현에 따라 달라집니다.

자바를 사용하여 샘플을 찾고 있다면 play2-java-computer-database sample과 특히 main templateSecured helper class을 확인하십시오.

관련 문제