Grails:使用Spring Security插件注释的用户评估程序

时间:2010-08-22 10:38:33

标签: grails spring-security

我正在尝试使用Spring Security的可评论插件。

我无法写出正确的

grails.commentable.poster.evaluator

我试过{User.get(springSecurityService.principal.id)},  但是从CommentController,User和springSecurity似乎都无法访问。

我该怎么办?

2 个答案:

答案 0 :(得分:4)

对于springSecurityService.principal.id,因为springSecurityService没有依赖注入字段,因此无法正常工作,因此您需要调用springSecurityService.principal.id次调用 - org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id

要解决User的问题,您需要包含完整的类名。如此组合,这应该是

{com.yourcompany.yourapp.User.get(org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id)}

答案 1 :(得分:3)

我改编了Burt's answer,这样如果没有人登录就不会抛出异常

grails.commentable.poster.evaluator = {

    def principal = org.springframework.security.core.context.SecurityContextHolder.context.authentication?.principal

    if (principal?.hasProperty('id')) {

        def currentUserId = principal.id
        if (currentUserId) {
            com.yourcompany.yourapp.User.get(currentUserId)
        }
    }
}