Liferay 7에서 사용자 정의 로그인을 구현하고 있습니다. 로그인 후크 포틀릿 용 모듈 하나와 ActionCommand 용 모듈입니다.LAST_PATH Liferay 7의 사용자 정의 로그인 후 작업의 리디렉션
또한 게시 로그인 이벤트를위한 클래스를 생성했습니다. 문제는 리디렉션이이 클래스 또는 로그인 훅 포틀릿의 JSP에서 작동하지 않는다는 것입니다.
이것은 LifecycleAction 내 코드입니다 :
@Component(
immediate = true,
property = {
"key=login.events.post"
},
service = LifecycleAction.class
)
public class UserLoginPostAction implements LifecycleAction {
private static final Log LOGGER = LogFactoryUtil.getLog(UserLoginActionCommand.class);
@Override
public void processLifecycleEvent(LifecycleEvent lifecycleEvent) throws ActionException {
HttpServletRequest request = lifecycleEvent.getRequest();
HttpServletResponse response = lifecycleEvent.getResponse();
HttpSession session = request.getSession();
try {
User currentUser = PortalUtil.getUser(request);
LOGGER.info("USER|" + currentUser.getFirstName() + "|" + currentUser.getGroup().toString());
LOGGER.info("LASTPATH|" + session.getAttribute("LAST_PATH"));
LastPath lastPath = (LastPath) session.getAttribute("LAST_PATH");
LOGGER.info(lastPath.getPath());
session.setAttribute(WebKeys.LAST_PATH, lastPath);
response.sendRedirect(lastPath.getPath());
} catch (PortalException | IOException exception) {
LOGGER.error(exception);
}
}
}
이 porlet 로그인 JSP 내 코드입니다 :
<c:choose>
<c:when test="<%= themeDisplay.isSignedIn() %>">
<%
response.sendRedirect(WebKeys.LAST_PATH);
%>
</c:when>
<c:otherwise>
...
내 LOGGER 콘솔에 정확한 값을 표시 할 수 있습니다.
감사합니다.
리디렉션과 마찬가지로 숨겨진 입력 필드에도 값이 없습니다. 수동으로 값을 넣으려고했는데 로그인했을 때 성공적으로 페이지로 리디렉션되었습니다. 나는 그것이 그것이 가치를 얻을 것 인 방법으로 약간 혼란 스럽다. 매개 변수 redirect는 어디에서 값을 가져 오므로 리디렉션의 숨겨진 입력 값은? –
위의 코드를 볼 수있는 경우 LAST_PATH와 마찬가지로 WebKeys.LAST_PATH를 세션으로 설정합니다. 나는 sendRedirect를 제거했다. 그러나, 그것도하지 않습니다. 로그인 포틀릿/JSP 및 로그인 게시물 샘플을 제공 할 수 있습니까? 또는 나는 무엇인가 놓치고 있냐? 고맙습니다. –
saveLastPath 숨겨진 입력의 값을 true로 설정하고 리디렉션 입력을 제거/다시 넣으려고했습니다. 그것은 작동하지 않았다. –