に要求への2.0のアクセスを再生しますユーザーがログインすると、セッション属性username
が設定されますユーザーがログインしているかどうかを確認します。私は、例えば、implicit
リクエストオブジェクトを受け取り、テンプレートで使用できるは、私は、以下の単純化されたテンプレートのセットアップを持っているテンプレート
object SessionHelper {
val sessionKey = "username"
def authenticated(implicit request: RequestHeader) = {
request.session.get(sessionKey).exists(_ => true)
}
}
:
ユーザーがたりないログインしているかどうかを把握するために私を助けるために、私は次のセッションヘルパーオブジェクトを持っています私の知る限り、これはテンプレートで 暗黙の変数を取得する唯一の方法である—を言うことができるように、それはどこでも私はビューをレンダリング、私は明示的、暗黙的な要求を「定義」する必要があることを意味—以来(implicit request: play.api.mvc.RequestHeader)
...
@if(SessionHelper.authenticated) {
<strong>Authenticated!</strong>
}
...
変数。例:
def index = Action { implicit request =>
Ok(views.html.index(myStuff))
}
implicit request =>
ステートメントがないと、コンパイルされません。これはちょっと厄介ですが、「サブビュー」(例:ホームページや詳細)のいずれかにとどまっている限り、これらのビューのそれぞれにコントローラメソッドがあり、暗黙のうちに暗黙のアクセスにもアクセスできるので、問題ありません。RequestHeader
インスタンス。ただし、テンプレート(たとえば、メイン)のセッションにアクセスする必要がある場合、コントローラーによって明示的にレンダリングされないため、これは機能しません。
私はすぐにテンプレートのセッションにアクセスする方法を見ていません。クイックグーグルでは解決できない同じトピックについていくつかの質問以外に多くのことを明らかにしていません。何か案は?
更新:のように思えますが、this questionと多少関係があります。
は、私が "が見つかりません:値要求" を得る:
は、クラスrequestHeader
方法play.TemplateImports
によって自動的にインポートしました。 – Wrench@Wrench:カカの答えを見て、彼は説明をします。 要するに、暗黙のうちに何らかの暗黙的なものが利用可能です。そのクラスに掘り下げる –