AuthenticationService y ServiceRegistry en SHARE

cancel
Showing results for 
Search instead for 
Did you mean: 
bprados
Member II

AuthenticationService y ServiceRegistry en SHARE

Buenas,

¿cómo puedo obtener el AuthenticationService y ServiceRegistry en SHARE?

Tengo una clase que extiende a LoginController para sobreescribir la forma de login de Alfresco para poder autenticarme con mi propio sistema.

La cosa es, que necesito el AuthenticationService y el ServiceRegistry para sincronizar los datos.

He obtenido el ApplicationContext con:

ApplicationContext ctx2 = super.getApplicationContext();

Pero no puedo obtener lo siguiente:

AuthenticationService authenticationService = (AuthenticationService) ctx2.getBean("AuthenticationService");

me dice que el bean no está definidio

¿cómo lo hago? OS RECUERDO QUE ES SHARE
4 Replies
cybermakoki
Member II

Re: AuthenticationService y ServiceRegistry en SHARE

Hola bprados,

Lo que quieres hacer no se puede, porque los servicios AuthenticationService y ServiceRegistry son del repositorio (alfresco) y están en contextos diferentes.

Para modificar el login de share tienes que hacerlo con el LoginController como tu dices, y utilizar el userFactory:



            boolean authenticated = userFactory.authenticate(request, username, password);


Yo cree una clase SlingshotLoginController para que el usuario se autenticara con el correo electrónico de un LDAP, y después la cambié por la que share trae por defecto:


<bean id="loginController" class="net.zylk.web.site.servlet.SlingshotLoginController">
        <property name="cacheSeconds" value="-1" />
        <property name="useExpiresHeader"><value>true</value></property>
        <property name="useCacheControlHeader"><value>true</value></property>
        <property name="userFactory" ref="user.factory"></property>
    </bean>


Si nos dices que quieres hacer exactamente igual te puedo ayudar un poco más…

Un saludo,
Patricia.
bprados
Member II

Re: AuthenticationService y ServiceRegistry en SHARE

Muchas gracias por contestar, he hecho eso exactamente y ha funcionado.
cybermakoki
Member II

Re: AuthenticationService y ServiceRegistry en SHARE

Me alegro! un saludo Smiley Wink
jlniveiro
Member II

Re: AuthenticationService y ServiceRegistry en SHARE

Hola,

he intentado realizar una clase que hereder de LoginController para recoger el usuario y crear un registro del acceso (con el resultado de si es satisfactorio o no) pero después de montarlo todo y definirlo en el contexto como lo habeis detallado anteriormente, la propiedad <property name="userFactory" ref="user.factory"></property> no me la reconoce, me da un error al arrancar Tomcat pues no reconoce el bean "userFactory". El error es:


   2014-08-12 15:11:22,251  ERROR [web.context.ContextLoader] [localhost-startStop-1] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginController' defined in file [/opt/alfresco/tomcat/shared/classes/alfresco/extension/CNCA-webscripts-context.xml]: Cannot resolve reference to bean 'user.factory' while setting bean property 'userFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user.factory' is defined
   at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
   at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
   at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)
   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
   at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
   at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:724

   Estoy utilizando Alfresco Community 4.2e. ¿Como puedo obtener el UserFactory? ¿tiene otro nombre en la versión que manejo?. Muchas gracias. Un saludo.