任何人使用securesocial实现了deadbolt或任何其他授权机制?

时间:2013-03-22 16:15:30

标签: scala playframework authorization playframework-2.1 securesocial

我正在网上浏览以找到某种教程,但我找不到它。 我想我可以使用securesocial提供的twitter示例

示例:

def onlyAdmin = SecuredAction(WithAuth("admin")) { implicit request =>
      Ok("You could see this since you are admin")
}

case class WithAuth(role: String) extends Authorization {
  def isAuthorized(user: Identity) = {
val existingDbUser = User.findUserByProviderUserId(user)
    existingDbUser.hasRole(role)
}

User.findUserByProviderUserId(user)调用db来查找存储的用户及其角色。 我不希望每次都调用数据库并使用Identity

你会如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

那将是正确的方法。您可以从UserService.save()方法返回您自己模型的实例(只要它实现Identity)。这将允许您返回您的User对象,然后直接运行user.hasRole(role)而无需再次查询数据库。但是查询需要在某个时刻完成。