2

チュートリアルで説明されているように、Secured トレイトを実装しました。

trait Secured {
...

def IsAuthenticated(f: => String => Request[AnyContent] => Result) = Security.Authenticated(username, onUnauthorized) { user =>
    Action(request => f(user)(request))
  }
...
}

そして、次のように使用します。

def list = IsAuthenticated { username => _ =>
...
}

これで、ファイルのアップロードについて次の定義ができました。

def upload = Action(parse.multipartFormData) { request =>
...
}

IsAuthenticated と parse.multipartFormData を組み合わせて、ファイルのアップロード中にユーザーを確認できるようにすることはできますか?

4

2 に答える 2

3

実装したバージョンは BodyParser を受け取りません。チュートリアルには、BodyParser を受け入れるバージョンがあります。

def Authenticated[A](p: BodyParser[A])(f: AuthenticatedRequest[A] => Result) = {
  Action(p) { request =>
    request.session.get("user").flatMap(u => User.find(u)).map { user =>
      f(AuthenticatedRequest(user, request))
    }.getOrElse(Unauthorized)      
  }
}

これを使用してください。必要なコードはすべてページの下部にあります

于 2012-11-06T21:53:02.807 に答える
1

関数をオーバーロードする必要がある場合があります。

   def IsAuthenticated[A](p: BodyParser[A])(f: => String => Request[A] => Result): Action[A] ={
    ...
   }

    def IsAuthenticated[AnyContent](f: => String => Request[AnyContent] => Result): Action[AnyContent] = 
       IsAuthenticated(BodyParsers.parse.anyContent)(f)

私は自分のアプリケーションで同様のことをしました。

于 2012-11-06T22:04:56.863 に答える