我正在尝试使用Spring Security的可评论插件。
我无法写出正确的
grails.commentable.poster.evaluator
我试过{User.get(springSecurityService.principal.id)}, 但是从CommentController,User和springSecurity似乎都无法访问。
我该怎么办?
答案 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)
}
}
}