我一直试图让ldap-0.8.2或gldapo插件与Grails 2.3.5一起在AD中执行简单的人物搜索。我不是在寻找身份验证,只是为了构建人员目录搜索表单。我已经接近一周了,现在正在查看实现这个插件的问题的旧参考,似乎无法弄清楚跳出来的火炬的正确组合是什么。
在BuildConfig.groovy中我有:
compile ":ldap:0.8.2"
在Config.groovy中我有:
import edu.fgcu.gtd.GldapoUser
ldap {
directories {
directory1 {
defaultDirectory = true
url = "ldap://FGCU-AMBERJACK.primary.ad.fgcu.edu"
userDn = "CN=******,OU=******,OU=******,OU=******,DC=**,DC=**,DC=***,DC=***"
password = "********"
searchControls {
countLimit = 40
timeLimit = 600
searchScope = "subtree"
}
}
}
schemas: [edu.fgcu.gtd.GldapoUser]
}
我在路径" Ldap / edu / fgcu / gtd / GldapoUser.groovy"
中有以下groovy文件package edu.fgcu.gtd
import gldapo.schema.annotation.GldapoNamingAttribute
import gldapo.schema.annotation.GldapoSynonymFor
import gldapo.schema.annotation.GldapoSchemaFilter
/**
*
* @author pallen
*/
@GldapoSchemaFilter("(objectclass=person)")
class GldapoUser {
@GldapoSynonymFor("uid")
String username
@GldapoSynonymFor("cn")
String name
@GldapoSynonymFor("title")
String title
@GldapoSynonymFor("physicalDeliveryOfficeName")
String office
@GldapoSynonymFor("telephoneNumber")
String phone
@GldapoSynonymFor("mail")
String email
@GldapoSynonymFor("department")
String department
}
然后我有以下控制器
package edu.fgcu.gtd
import edu.fgcu.gtd.GldapoUser
class PersonSearchController {
def index() {
render(view: "search")
}
def search() {
String searchString = params?.lastName + "*"
if (params.firstName){
searchString += "," + params.firstName + "*"
}
def List personSearchList = GldapoUser.findAll(
base: "OU=Florida Gulf Coast University,DC=primary,DC=ad,DC=fgcu,DC=edu") {
like "cn", searchString
}
respond personSearchList, model:[personSearchCount: personSearchList.count()]
}
}
当我运行应用程序时,我收到以下错误,我看到其他人参考,但到目前为止我找到的所有建议都没有帮我解决这个问题。
URI: /GroovyGTD/personSearch/search
Class: groovy.lang.MissingMethodException
Message: No signature of method: static edu.fgcu.gtd.GldapoUser.findAll() is applicable for argument types: (java.util.LinkedHashMap, edu.fgcu.gtd.PersonSearchController$_search_closure1) values: [[base:OU=Florida Gulf Coast University,DC=primary,DC=ad,DC=fgcu,DC=edu], ...] Possible solutions: findAll(), findAll(groovy.lang.Closure), find(), find(groovy.lang.Closure)
我对Grails比较陌生,但我对Java非常擅长,并且已经为外部库做了一些困难的配置,但是这个插件让我很难过。
提前致谢,
保
答案 0 :(得分:0)
我能够全力以赴。
第一个问题是模式评论。我不得不在config.groovy中放置schemas = [edu.fgcu.gtd.GldapoUser]。
接下来,我必须为我的GldapoUser对象添加一个@GldapoNamingAttribute以获取“cn”属性,并且“uid”不在我的AD人员条目中,所以我摆脱它并使用“sAMAccountName”作为用户名。
在这些变化之后,这一切都运转良好。