我有这个方法:
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 抱怨:
不能使用返回对象作为处理程序的方法
有人有任何线索吗?