2012-03-22 3 views
0

LiferayポータルサーバーでSpring Portlet-MVCフレームワークとVelocityを使用するプロジェクトで作業しています。いくつかのページでは、安全な接続でそれらを提供する必要があります。 Portletsの新機能であるAction-Methodへのリンクとそれからのリダイレクトの解決策を思いつきました。RenderRequestでのプロトコルリダイレクト

@ActionMapping(params = "command=secureRedirect") 
public void actionSecureRedirect(ActionRequest request, ActionResponse response) { 
    HttpServletRequest servletRequest = PortalUtil.getHttpServletRequest(request); 
    String absoluteUrl = servletRequest.getRequestURL().toString(); 
    String[] urlComponents = StringUtils.split(absoluteUrl, '/'); 
    StringBuffer redirectUrl = new StringBuffer("https://"); 
    redirectUrl.append(urlComponents[1]); 
    redirectUrl.append("<specificPath>"); 
    response.sendRedirect(redirectUrl.toString()); 
} 

私の解決策は機能しますが、私にとってはそれほど素晴らしいものではありません。私は誰かがこれを行うためのもう一つの、より透明な方法(RenderMappings上のインターセプタと注釈を使用するかもしれませんか?)を考えることができるかどうか疑問に思っていました。

ご意見をいただければ幸いです!

答えて

2

一部のページでは、Liferayページを意味するのか、ユーザーがポートレットから何らかのリンクをクリックしたときに生成されるURLが気になるだけですか。

ポートレットの一部のリンクを安全にしたい場合は、liferay-portlet flavorまたはrenderURLまたはactionURLを使用する場合。それは、あなたが(たとえば/ウェブ/ゲスト/マイページ用)いくつかのLiferayページを探している場合はtrueに設定されている場合、セキュアと呼ばれる属性は、セキュリティで保護されるHTTPS

で始まるURLを行います持っていますハックのようなものだと私は本当に誰にもこれを示唆していませんが、他の選択肢がない場合は、サービスのフックを作成し、あなたが気にかけているURLパターンをチェックし、そのURLのhttpsバージョンにリダイレクトできます。

1
write this code in controller 


protected PortletURL getRedirectURL(ActionRequest actionRequest) { 
     ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY); 
     String portletName = (String) actionRequest.getAttribute(WebKeys.PORTLET_ID); 
     PortletURL redirectURL = PortletURLFactoryUtil.create(PortalUtil.getHttpServletRequest(actionRequest), portletName, themeDisplay.getLayout().getPlid(), 
       PortletRequest.RENDER_PHASE); 
     return redirectURL; 
    } 

@ActionMapping(params="something") 
public void save(ActionRequest actionRequest, Other parameters){ 



/.....Your code 



.....// 
redirectURL = getRedirectURL(actionRequest); 
actionResponse.sendRedirect(redirectURL.toString()); 
} 
関連する問題