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。在教程中有一个接受 BodyParsers 的版本:

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 回答