【发布时间】:2011-04-02 06:03:52
【问题描述】:
我正在尝试将可注释插件与 Spring Security 一起使用。
我写不出来
grails.commentable.poster.evaluator
我试过 {User.get(springSecurityService.principal.id)}, 但从 CommentController 来看,User 和 springSecurity 似乎都无法访问。
我该怎么办?
【问题讨论】:
我正在尝试将可注释插件与 Spring Security 一起使用。
我写不出来
grails.commentable.poster.evaluator
我试过 {User.get(springSecurityService.principal.id)}, 但从 CommentController 来看,User 和 springSecurity 似乎都无法访问。
我该怎么办?
【问题讨论】:
对于springSecurityService.principal.id,因为springSecurityService 没有依赖注入字段,所以它不能工作,所以你需要调用springSecurityService.principal.id 调用的内容 - org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id
要解决 User 的问题,您需要带有 package.json 的完整类名。这么结合,应该是这样的
{com.yourcompany.yourapp.User.get(org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id)}
【讨论】:
getPrincipal()方法,这样可以缩短对com.yourcompany.yourapp.User.get(principal.id)的调用,但最好还有一个getCurrentUser方法-我会在下一个版本中添加它。
我调整了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)
}
}
}
【讨论】: