0

Play フレームワークとテンプレート エンジンを使用して Web サイトを作成しています。ログイン時に登録リンクがまだ表示されているという事実に不満を持っていることを除いて、すべてがうまくいきます.

   <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

すべての承認を自分で実装したいとは思いません。Play 用の Deadbolt モジュールを使用することをお勧めします: 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 ヘルパー クラスをチェックしてください。

于 2013-11-09T19:38:16.483 に答える