0

我创建了一个自定义LdapUserDetailsMapper类来将扩展属性映射到一个自定义UserDetails类,该类包含诸如displayName,之类的额外属性telephoneNumberdepartment仅举几例。我设法通过访问属性来填充这些属性DirContextOperation,即

res.givenName = ctx.getStringAttribute("givenName");

但是,我不希望对此进行硬编码,并且希望这些属性可配置,这很好,尽管我也想使用 LDAP 表达式来返回由该表达式产生的值,即

res.givenName = ctx.getStringAttribute("givenName + ' ' + sn");

这当然行不通。我可以在任何连接之前手动解析模式并检索组件,但这听起来像是我想象框架已经提供的工作。

4

1 回答 1

1

我认为可行的一种可能的解决方案是使用Spring Expression Language。实现您自己的EvaluationContext,将DirContextOperations实例作为根对象并将属性读取转发到其getStringAttribute()方法。这种情况下的表达式不完全是 LDAP 表达式,但我猜 SpEL 更强大,所以它可能会更好。

于 2013-02-23T09:02:05.060 回答