あなたの特定の目標は、関心のあるコントローラーの各アクションで、未登録のユーザーに関連するデータ全体を効率的に収集することだと思います。UnregisteredUser問題:セッションでこれらすべてのデータを直接収集するビルドを取得したいと考えています。
UnregisteredUserまず、基本的な Play 2 の API Sessionsを使用して、セッションでいつでもデータを永続化します。
Ok("Welcome Guest User!").withSession(
  "email" -> "unregisteredUserEmail"  //  assuming a randomly chosen Id since not logged yet
  // many other data here
)
次に、以下を含むtrait実際のSecureSocialトレイトを拡張するだけで記述できます。
case class GuestRequest[A](optUnregisteredUser: Option[UnregisteredUser], request: Request[A]) extends WrappedRequest(request)
def GuestAction(f: GuestRequest[AnyContent] => Result): Action[AnyContent] = {
    implicit request => {
      val optUnregisteredUserEmail = session.get("currentUnregisteredUser")
      val unregisteredUser = UnregisteredUser(optUnregisteredUserEmail) 
      f(GuestRequest(optUnregisteredUser, request))
}
関連する各コントローラーで、次のことを行うだけです。
def addToCard = GuestAction {
    implicit request =>
      val currentUnregisteredUser: UnregisteredUser = optUnregisteredUser.getOrElse(.....)
      //remaining instructions here
  }
-  -  -  -  -  -  - アップデート -  -  -  -  -  - -
UserAwareAction実際、両方の User スタイルにfrom existing SecureSocialtrait を使用できます。したがって、UserAwareAction機能を組み合わせるには、SecureSocial を拡張するトレイトでオーバーライドする必要があります。
    override def UserAwareAction[A](p: BodyParser[A])(f: RequestWithUser[A] => Result) = Action(p) {
        implicit request => {
          val user = for (
            authenticator <- authenticatorFromRequest;
            user <- userServices.findByUserName(authenticator.userName)
          ) yield {
            touch(authenticator)
            user
          }
          if(user.isEmpty){  //meaning user is not logged
            f(RequestWithUser(tryToBuildUnRegisteredUser, request))  //setting your unregisteredUser
          }
          else{
            f(RequestWithUser(user, request))
          }
        }
      }
 private def tryToBuildUnregisteredUser = {
    val optUnregisteredUserEmail = session.get("currentUnregisteredUser")
    optUnregisteredUserEmail match {
      case Some(e) => Some(UnregisteredUser(e)) 
      case _ => None
    }
 }
もちろん、自由にリファクタリングできます:)