Liferay AutoLogin当前登录问题

时间:2019-05-28 14:58:38

标签: java liferay-7

基于Liferay 7文档编写的自动登录代码。用户已成功登录,但问题是用户登录后,Liferay反复调用预登录并再次自动登录。

 public String[] login(
   {
    final String[] credentials = new String[3];
    Cookie cookie = getCookie((HttpServletRequest) request, PropsUtil.get(COOKIE_NAME));

    if(cookie == null){
        request.setAttribute(AutoLogin.AUTO_LOGIN_REDIRECT, getRedirectUrl(request));
    }else{
        ValidateCookieResponse validateCookieResponse = Authenticate(cookie.getValue());
        if(validateCookieResponse != null){
                String userName = validateCookieResponse.getUser().getUserLogin();                                                  
                    if (StringUtils.isBlank(userName)){
                        request.setAttribute(AutoLogin.AUTO_LOGIN_REDIRECT, getRedirectUrl(request));
                    }else{
                        long companyId = PortalUtil.getCompanyId(request);
                        com.liferay.portal.kernel.model.User user = null;
                        try {
                            user = UserLocalServiceUtil.getUserByScreenName(companyId, userName);
                        } catch (PortalException e) {
                            request.setAttribute(AutoLogin.AUTO_LOGIN_REDIRECT, getRedirectUrl(request));
                        }
                        if(user != null){   

                            credentials[0] = String.valueOf(user.getUserId());
                            credentials[1] = user.getPassword()
                            credentials[2] = String.valueOf(user.isPasswordEncrypted()) ;                                                              
                            return credentials;
                        }else{

                            request.setAttribute(AutoLogin.AUTO_LOGIN_REDIRECT, getRedirectUrl(request));
                        }
                    }
                }
            }
        }else{

            request.setAttribute(AutoLogin.AUTO_LOGIN_REDIRECT, getRedirectUrl(request));
        }
    return credentials;
}

0 个答案:

没有答案