2017-11-21 16 views
0

私は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は、コンソール上で正しい値を表示することができます。

ありがとうございます。

答えて

0

ログイン後の転送はややこしいです。

LAST_PATH属性とセッション属性を使用する場合は、Liferayによって処理されるため、リダイレクト送信ラインは不要です。最後のパスは、URLパラメータの影響を受けても 'リダイレクト'することができます。

送信リダイレクトのアプローチを使用する場合は、あなたのURLを構築し、あなたが作成したURLをsendRedirect()呼び出しの前にしてください。セッションパラメータは使用しないでください。

PS:ログインを変更する場合は、ログインポートレットに重いオーバーライドを行う代わりに、AuthPipelineをご覧ください。

+0

リダイレクトと同様に、私の非表示の入力フィールドには値がありません。私は手動で値を入れようとしましたが、ログインしたときにページにリダイレクトされました。私はそれが価値を得る方法としてちょっと混乱しています。パラメータredirectは値を取得するので、リダイレクトの隠された入力は値をとるでしょうか? –

+0

LAST_PATHと同じように、上記のコードが見える場合は、WebKeys.LAST_PATHをセッションに設定します。私はsendRedirectを削除しました。しかし、それはどちらもしません。ログイン・ポートレット/ jspとログイン・ポストのサンプルを教えてください。または私は何かを逃していますか?ありがとうございました。 –

+0

saveLastPath hidden inputの値をtrueに設定し、リダイレクト入力を削除/戻しました。それはうまくいかなかった。 –

関連する問題