首页 > 解决方案 > 在配置 Alfresco LDAP 集成时提供自定义命名空间

问题描述

我有一个带有 ldap-ad 用户/组同步的 Alfresco Community 5.2 安装,并且一切正常。

现在我必须添加一个带有一些属性的方面并让 ldap 处理它们,将它们添加到 cm:person 中。所以我按照这里common-ldap-context.xml的建议定制了它,但我只管理它来覆盖原始的 Alfresco 内容模型,使用 cm: 前缀作为方面/属性命名空间。

如果我使用我的个人模型前缀,每当我启动 Alfresco 时,我都会从 spring 加载 common-ldap-context.xml 文件中收到“unkown namespace”错误。

如何将我的命名空间导入该文件?是否有可能我必须使用 cm: 前缀?

这是我的 common-ldap-context.xml 片段

<property name="personAttributeMapping">
    <map>
        <!-- ... -->
        <entry key="myc:prop1">
           <value>${ldap.synchronization.prop1</value>
        </entry>
        <entry key="myc:prop2">
            <value>${ldap.synchronization.prop2</value>
        </entry>
        <entry key="myc:prop3">
           <value>${ldap.synchronization.prop3</value>
        </entry>
        <entry key="myc:prop4">
            <value>${ldap.synchronization.prop4</value>
        </entry>
        <!-- ... -->
    </map>
</property>

common-ldap-context.xml 中的 personAttributeMapping 被放置在 path 中Alfresco/tomcat/shared/classes/alfresco/extension/Authentication/ldap-context.xml。自定义文档模型在 bean 组件中定义,从bootstrap.context.xml

谢谢。

标签: springldapalfresco

解决方案


我让它定义了所需的 bean 提示 depends-on="..."(当然使用你的 bean 名称加载模型)。

所以我custom-ldap-context.xml的 in extension/subsystems/Authentication/ldap-ad/ldap-ad1(文件夹取决于您配置的子系统)看起来像:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<!--
   Bean definitions shared by the ldap and ldap-ad subsystems
-->

<beans>

   <!-- Regularly exports user and group information from LDAP -->

        <bean id="ecm4u.personDetails.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
                <property name="models">
                        <list>
                                <value>alfresco/extension/personDetails.xml</value>
                        </list>
                </property>
        </bean>

<bean id="userRegistry" class="org.alfresco.repo.security.sync.ldap.LDAPUserRegistry" depends-on="ecm4u.personDetails.dictionaryBootstrap">

<!-- snap -->

      <property name="personAttributeMapping">
         <map>

<!-- snap -->

           <!-- BEGIN New properties -->
            <entry key="pd:employeeNumber">
               <value>${ldap.synchronization.userEmployeeNumberAttributeName}</value>
            </entry>
            <!-- END New properties -->

<!-- snap -->

推荐阅读