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

我在网上浏览找到某种教程,但我找不到它.

我想我可以使用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以查找存储的用户及其角色.
我不希望每次都调用db并使用Identity.

你怎么解决这个问题?

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

点赞