掲示板

Redireccionar despues de login

11年前 に Roberto Fernandez Montero によって更新されました。

Redireccionar despues de login

New Member 投稿: 21 参加年月日: 12/12/12 最新の投稿
Buenas, estoy intentando generar redirecciones dinamicas despues del Login, lo hago de la siguiente forma, en funcion del tipo de usuario que sea:



public class AccionLogin extends Action {

     @Override
     public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {
	try {
	     doRun(request, response);
	} catch (Exception e) {
	     throw new ActionException(e);
	}
     }
     protected void doRun(HttpServletRequest request, HttpServletResponse response) throws Exception {

	HttpSession sesion = request.getSession();
	User usuarioLogin = PortalUtil.getUser(request);

	// Recupero la lista de roles
	ArrayList<role> roles = UtilRoles.getIntExtRol();


// Compruebo si el usuario pertenece al grupo
	if (UtilLdap.esGrupo(request, usuarioLogin.getScreenName())) {
	     Constantes._log.info("El usuario es Interno en el Ldap vector. Gestiono su rol");
	     UtilRoles.setRoleIfNotHave(usuarioLogin, roles, Constantes.INTERNOS);
	     sesion.setAttribute(WebKeys.LAST_PATH, UtilUrls.generaLasthPath(request, Constantes.INTERNOS));
	     response.sendRedirect(UtilUrls.generaRedireccion(request, Constantes.INTERNOS));


	} else {
	     Constantes._log.info("El usuario es externo en el Ldap vector. Gestiono su rol");
	     UtilRoles.setRoleIfNotHave(usuarioLogin, roles, Constantes.EXTERNOS);
	    // sesion.setAttribute(WebKeys.LAST_PATH, UtilUrls.generaLasthPath(request, Constantes.EXTERNOS));
	     response.sendRedirect(UtilUrls.generaRedireccion(request, Constantes.EXTERNOS));
	}
     }
}</role>


Como veis, he probado a traves de last_path y de redirect, en ambos casos me falla,genero un problema de cookies y redireccionamiento infinito.
El generaLasthPath y redireccion unicamente me lleva a

www.portal.com/liferay-portal/group/intranet/internos
O
www.portal.com/liferay-portal/group/intranet/externos

Yo paso el /grooup/...

Alguien tiene alguna sugerencia?
Gracias.
thumbnail
11年前 に Sergio González によって更新されました。

RE: Redireccionar despues de login

Expert 投稿: 301 参加年月日: 10/01/07 最新の投稿
Buenas Roberto,

No sé si ya lo habrás mirado, pero Liferay ofrece por defecto una clase que es muy parecido a lo que tú quieres hacer, salvo que el comportamiento es para todos los usuarios el mismo (mientras que el tuyo depende del usuario).

La clase es DefaultLandingPageAction.java en portal-impl/src/com/liferay/portal/events.

La lógica que tiene es:


	protected void doRun(
			HttpServletRequest request, HttpServletResponse response)
		throws Exception {

		long companyId = PortalUtil.getCompanyId(request);

		String path = PrefsPropsUtil.getString(
			companyId, PropsKeys.DEFAULT_LANDING_PAGE_PATH);

		if (_log.isInfoEnabled()) {
			_log.info(
				PropsKeys.DEFAULT_LANDING_PAGE_PATH + StringPool.EQUAL + path);
		}

		if (Validator.isNotNull(path)) {
			LastPath lastPath = new LastPath(StringPool.BLANK, path);

			HttpSession session = request.getSession();

			session.setAttribute(WebKeys.LAST_PATH, lastPath);
		}


Como ves, no hace ningún redirect, simplemente setea en la request el atributo WebKeys.LAST_PATH con el objeto LastPath que se genera en función de lo que se define en esta propiedad del portal.properties:

##
## Default Landing Page
##

#
# Set the default landing page path for logged in users relative to the
# server path. This is the page users are automatically redirected to after
# logging in. For example, if you want the default landing page to be
# http://localhost:8080/web/guest/login, set this to /web/guest/login. To
# activate this feature, set auth.forward.by.last.path to true. To customize
# the behavior, see com.liferay.portal.events.DefaultLandingPageAction in
# the "login.events.post" property above.
#
default.landing.page.path=
#default.landing.page.path=/web/guest/login

Comprueba que tus métodos UtilUrls.generaLasthPath devuelven un objeto LastPath y que se crean con la siguiente url (como se indica en el portal.properties) "/web/guest/login"

Un saludo