私はこの方法を持っています:
def withAuth(f: => User => Request[AnyContent] => Result) = {
Authentication.isAuthenticated(AuthenticationToken(AuthenticationService.TokenKey)) match {
case None => Results.Redirect(routes.AuthenticationService.notLoggedIn)
case Some(user) => Action(request => f(user)(request))
}
}
そして私はそれを次のように使用します:
def list(locationId: Option[Int]) = withAuth { user =>
implicit request =>
val entities = Assets.filter(user, locationId)
Logger.info("Succesfully returned %d assets to user %s".format(entities.length, user))
Ok(Json.toJson(entities.map(s => Json.toJson(s))))
}
Redirect
お気づきのように、ユーザーがログインしていない場合はログインページに移動し、それ以外の場合はセッションからユーザーを返すメソッドのように使用したいと考えています。問題はそのリダイレクトにあり、実行時に Play は次のように不平を言っています:
Object を返すメソッドを Handler として使用することはできません
誰にも手がかりはありますか?