2013-02-22 44 views
0

我創建了一個自定義LdapUserDetailsMapper類來將擴展屬性映射到包含displayName,telephoneNumberdepartment之類的其他屬性的定製UserDetails類。我設法通過訪問屬性對DirContextOperation,即如何創建一個可以爲屬性值創建模式的LdapUserDetailsMapper?

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

我不想硬編碼然而,這並希望有這些性能配置,這是很好的填充這些屬性,雖然我也想使用LDAP表達式返回該表達式產生的值,即

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

這當然不起作用。我可以在任何級聯之前手動解析模式並檢索組件,但這聽起來像我認爲該框架已經可以提供的工作。

回答

1

我想象的一種可能的解決方案是使用Spring Expression Language。實現你自己的EvaluationContext,它將一個DirContextOperations實例作爲根對象,並將porperty讀取轉發給它的getStringAttribute()方法。這種情況下的表達式不完全是LDAP表達式,但我猜SpEL更強大,所以它可能會更好。