zk和spring security的结合问题

    在zk和spring security结合使用的时候,因为要使用zk的messagebox组件,所以就在zk.xml中把disable-event-thread这个属性设置为false了,但是最后发现SecurityContextHolder.getContext().getAuthentication() 得到的结果一直是null,折腾了半天,结果才找到解决方案:

 

在zk.xml中,加入 org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy=contextHolder;

位置如下:

 

<preference>

            <name>ThreadLocal</name>

            <value>

                org.springframework.transaction.support.TransactionSynchronizationManager=resources,

                synchronizations,currentTransactionName,currentTransactionReadOnly,actualTransactionActive;

                org.springframework.orm.hibernate3.SessionFactoryUtils=deferredCloseHolder;

                org.springframework.transaction.interceptor.TransactionAspectSupport=transactionInfoHolder;      

 

org.springframework.web.context.request.RequestContextHolder=requestAttributesHolder,inheritableRequestAttributesHolder;

                org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy=contextHolder;

            </value>

</preference>

你可能感兴趣的:(zk和spring security的结合问题)