4

安全なソーシャル統合を備えたプレイ 2.1 に取り組んでいます。今のところ、SALAT を使用して securesocial を mongod db と統合することができました。これで、ログイン/ログアウトできるようになりました。しかし、今私が欲しいのは、ユーザーがログインした場合、Webアプリケーションのヘッダーにアバターなどのユーザー情報を表示する必要があり、パラメーターとして渡さずにscala.htmlでユーザー情報を取得する方法がわかりませんコントローラ。私はこれを毎回行うことはできません。

セッションからユーザーを取得し、ELまたはSpring taglibを使用してユーザー情報を表示するSpring Securityに似たものはありますか???

4

3 に答える 3

3

このコミュニティが非常に活動的でないか、この質問に答えたくないのは悲しいことです。数年経った今でも、Spring および Java コミュニティが最も基本的な質問に答えていることがわかります。これが私がやったことです。改善や提案は大歓迎です。

ユーザーを暗黙的なメソッドとして返すメソッドをコントローラーに作成しました。

  implicit def user(implicit request: RequestHeader):Option[Identity] = {
    SecureSocial.currentUser
  }

このユーザーをテンプレートに渡し、暗黙的にします。なぜコントローラーから直接使用できないのか疑問に思っています。私はそれを明示的に渡す必要がありますが、これは非常に奇妙です。

  @(implicit user:Option[securesocial.core.Identity])

ユーザー情報はすべてのページに含まれている必要があるため、メイン テンプレートに含めるか、ユーザー情報をレンダリングする別のテンプレートを呼び出すメイン テンプレートを使用する必要があります。私のメイン テンプレートでは =>

@(title: String, nav: String = "")(content: Html)(implicit user:Option[securesocial.core.Identity]=None)

次に、いくつかのビュー関連のコード

@if(user.isDefined){
      <li>          
         <a href="@securesocial.controllers.routes.LoginPage.logout()"/>Logout</li>
         }else{
      <li>
        <a href="@securesocial.core.providers.utils.RoutesHelper.login()">Login</a></li>
 }
于 2013-09-02T02:20:29.223 に答える
2

暗黙的なユーザーを提供せずに単純化するには、scala テンプレートで直接 SecureSocial.currentUser() を呼び出すだけです。

それをインポートする必要があり、ユーザーが定義されているかどうかを確認できます。

@import securesocial.core.SecureSocial

@if(SecureSocial.currentUser.isDefined) {
    ...
}
于 2014-04-06T11:46:31.267 に答える