【发布时间】:2013-11-11 23:48:47
【问题描述】:
是否可以在 playframework 中实现类似的装饰器(来自 django)?
@permission_required('polls.can_vote')
def my_view(request):
return HttpResponse('Ok')
【问题讨论】:
标签: django scala authentication playframework authorization
是否可以在 playframework 中实现类似的装饰器(来自 django)?
@permission_required('polls.can_vote')
def my_view(request):
return HttpResponse('Ok')
【问题讨论】:
标签: django scala authentication playframework authorization
如果你看一下 Play 的官方文档,比他们有几个examples for handling 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 and Scala。
【讨论】: