留言板

DeleteUser en un plugin extension

Diego Gonzalez,修改在11 年前。

DeleteUser en un plugin extension

New Member 帖子: 2 加入日期: 12-9-26 最近的帖子
Hola,
Estoy desarrollando un plugin del tipo extension, y estoy modificando la clase CreateAccountAction. Para ello modifique el struts config para que utllice una clase creada por mi, que tiene una copia de la orginal con algunas modificaciones. En esa clase necesito eliminar el usuario creado para ciertos casos. Para ello invoco la función UserServiceUtil.deleteUser(userId), pero cuando se invoca esta función me da la excepción: "com.liferay.portal.security.auth.PrincipalException"

12:34:05,419 WARN [org.apache.struts.action.RequestProcessor] (http--127.0.0.1-8080-4) Unhandled Exception thrown: class com.liferay.portal.security.auth.PrincipalException
12:34:05,424 INFO [stdout] (http--127.0.0.1-8080-4) 12:34:05,421 ERROR [http--127.0.0.1-8080-4][render_portlet_jsp:154] com.liferay.portal.security.auth.PrincipalException
12:34:05,425 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.service.BaseServiceImpl.getUserId(BaseServiceImpl.java:95)
12:34:05,425 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.service.impl.UserServiceImpl.deleteUser(UserServiceImpl.java:625)
12:34:05,425 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:122)
12:34:05,426 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
12:34:05,426 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
12:34:05,427 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57)
12:34:05,427 INFO [stdout] (http--127.0.0.1-8080-4) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)

Busqué por todos lados pero no encuentro nada relacionado, si alguien tiene alguna pista se agradece!
Estoy usando liferay 6.1 en jboss
Saludos!
thumbnail
Jose A. Jiménez,修改在11 年前。

RE: DeleteUser en un plugin extension

Regular Member 帖子: 176 加入日期: 12-8-23 最近的帖子
Hola Diego,

En un proceso de creación de cuenta quizás sea muy arriesgado el acceder a borrar un usuario, ¿no crees? independientemente de tu error original esto podría suponer un agujero de seguridad bastante serio.

Por otro lado cuando se suele realizar una creación de cuenta personalizada, en lugar de sobrescribir la genérica del portal lo que se suele hacer es configurar una URL distinta a la de por defecto, para ello basta con añadir la property company.security.strangers.url=/your-custom-page a tu fichero portal-ext.properties.
En esa página podrás desplegar tu propio portlet de registro y meter toda la lógica que consideres, esto te evitará el migrar la clase original que tu estas modificando y que en futuras actualizaciones podría cambiar, limitándose la migración a la comprobación de que no ha cambiado ninguna llamada a las interfaces del portal en tu propio portlet.

Y por último te respondo a tu error concretol. Hay dos tipos de interfaces para acceder a la capa de servicio de tu instancia (en realidad hay más porque están las interfaces JSON, SOAP, etc) las XXXXServiceUtil y las XXXXLocalServiceUtil.

Respecto a la que estás utilizando comentarte que XXXXServiceUtil hacen una comprobación de que el usuario que hay en sesión tenga permiso para realizar la operación (aunque este sea el usuario Guest/Invitado), mientras que los interfaces del tipo XXXXLocalServiceUtil te darían acceso a operaciones sin comprobación de permisos. Depende de la funcionalidad que estés abordando y donde la estés implementando, te interesará acceder a la capa de servicio a través de unas interfaces u otras.
Las interfaces que comprueban permisos te dan la ventaja de que posteriormente pueden ser gestionados a través del propio sistema de Gestión de Roles y permisos de Liferay por un Administrador.

Demasiado extendido pero espero que te ayude en tu desarrollo y cuidar desde el principio las buenas prácticas emoticon

Saludos!!

Jose
thumbnail
Jose A. Jiménez,修改在11 年前。

RE: DeleteUser en un plugin extension

Regular Member 帖子: 176 加入日期: 12-8-23 最近的帖子
Échale un vistazo al siguiente apartado de la guía de desarrollo, te será muy útil emoticon

http://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/liferay-ap-1
Diego Gonzalez,修改在11 年前。

RE: DeleteUser en un plugin extension

New Member 帖子: 2 加入日期: 12-9-26 最近的帖子
Hola Jose,
Muchas gracias, eso solucionó mi problema. De todos modos voy a considerar hacer los cambios que planteaste, muchas gracias por la información también.
Saludos
thumbnail
Jose A. Jiménez,修改在11 年前。

RE: DeleteUser en un plugin extension

Regular Member 帖子: 176 加入日期: 12-8-23 最近的帖子
You are welcome emoticon