私は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 hidden inputの値をtrueに設定し、リダイレクト入力を削除/戻しました。それはうまくいかなかった。 –