基于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;
}