0

我正在用播放框架和它的模板引擎做一个网站。一切正常,除了我对登录时注册链接仍然可见这一事实不满意。

   <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>

验证后有什么方法可以隐藏导航栏中的链接

4

2 回答 2

0

我怀疑您是否想自己实施所有授权。我建议用户使用 Deadbolt 模块进行 Play:https ://github.com/schaloner/deadbolt-2 。它具有所有必需的功能。

于 2013-11-09T18:20:26.140 回答
0

具体的解决方案当然取决于您的特定身份验证解决方案。但基本上你可以使用帮助类/对象中的一些函数来告诉你用户是否登录,并且根据这些信息,你可以显示或不显示注册链接。

对于一个播放演示,我已经这样做了,正如您在此模板中看到的那样,检查用户是否已登录

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

并且ShopsController(可以是任何其他帮助器对象)分别在我的情况下ShopsSecurity 特征(由 扩展ShopsController检查用户是否已登录,如果已登录,则检索用户名

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

该检查显然取决于基于 Play 内置的实现Security.AuthenticatedRequest

如果您正在寻找使用 java 的示例,您可以查看我的play2-java-computer-database 示例,特别是主模板Secured helper 类

于 2013-11-09T19:38:16.483 回答