我正在尝试使用Burt Beckwith的spring security framework ldap插件运行可评估的插件。
我发现了类似的问题here。
唯一的区别似乎是我使用LDAP并且LDAP用户详细信息没有id,或者我没有看到它。
我已尝试将grails.commentable.poster.evaluator设置为
{com.companyname.sec.User.get(org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.id)}
还有
{com.companyname.sec.User.get(principal.id)}
我在上面引用的另一个问题中提出了这两个问题。我得到的是以下错误:
groovy.lang.MissingPropertyException: No such property: id for class: org.springframework.security.ldap.userdetails.LdapUserDetailsImpl
可能的解决方案:dn
这似乎建议使用dn字段,但由于这是一个字符串,而id是Long,我认为这不是正确的选择。那么,有没有办法配置grails.commentable.poster.evaluator让这两个插件一起工作,或者我是否需要修改其中一个以获得兼容类型(即将可注释的插件更改为使用String,然后从LDAP用户详细信息中获取用户名。)?
答案 0 :(得分:1)
答案 1 :(得分:0)
使用
{com.companyname.sec.User.findByUsername(principal.username)}
或
{com.companyname.sec.User.findByUsername(org.springframework.security.core.context.SecurityContextHolder.context.authentication.principal.username)}
答案 2 :(得分:0)
这给了我以下错误:
org.grails.comments.CommentException: No [grails.commentable.poster.evaluator] setting defined or the evaluator doesn't evaluate to an entity. Please define the evaluator correctly in grails-app/conf/Config.groovy or ensure commenting is secured via your security rules
我读到这意味着没有findByUsername方法。那么,你是否建议我创建该方法以获得id值?我相应地假设,这意味着我需要将ldap用户插入数据库以生成id。