我创建了一个自定义LdapUserDetailsMapper
类,用于将扩展属性映射到自定义UserDetails
类,该类包含displayName
,telephoneNumber
和{{1}等内容的额外属性举几个例子。我设法通过访问department
的属性,即
DirContextOperation
我不想对此进行硬编码,并且希望这些属性可配置,这很好,但我也想使用LDAP表达式返回由该表达式产生的值,即
res.givenName = ctx.getStringAttribute("givenName");
这当然不起作用。我可以在任何连接之前手动解析模式并检索组件,但这听起来像我想象框架已经提供的工作。
答案 0 :(得分:1)
我想象的一个可能的解决方案是使用Spring Expression Language。实现您自己的EvaluationContext
,它将DirContextOperations
实例作为根对象,并将porperty读取转发到其getStringAttribute()
方法。这种情况下的表达式并不完全是LDAP表达式,但我猜SpEL更强大,所以它可能更好。