Fórum
Redireccionar despues de login
Roberto Fernandez Montero, modificado 11 Anos atrás.
Redireccionar despues de login
New Member Postagens: 21 Data de Entrada: 12/12/12 Postagens Recentes
Buenas, estoy intentando generar redirecciones dinamicas despues del Login, lo hago de la siguiente forma, en funcion del tipo de usuario que sea:
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.
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.
Sergio González, modificado 11 Anos atrás.
RE: Redireccionar despues de login
Expert Postagens: 301 Data de Entrada: 07/01/10 Postagens Recentes
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:
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
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