0

是否可以在 playframework 中实现类似的装饰器(来自 django)?

@permission_required('polls.can_vote')
def my_view(request):
   return HttpResponse('Ok')
4

1 回答 1

1

如果您查看 Play 的官方文档,那么他们有一些处理 Security的示例。

快速调整示例代码以满足您的需求:

def permissionNeeded(group: String)(f: User=> Request[AnyContent] => Result) = withAuth { username => implicit request =>
  UserDao.findOneByUsername(username).flatMap { user =>
    PermissionDao.hasPermission(user, group).map {
      permissionedUser => f(permissionedUser)(request)
    }
  }.getOrElse(onUnauthorized(request))
}

示例控制器方法如下所示:

def user() = permissionNeeded("polls.can_vote") { user => implicit request =>
  val username = user.username
  Ok(html.user(user))
}

如果您想使用注释,那么您必须研究AspectJ 和 Scala

于 2013-11-12T00:31:42.170 回答