簡體   English   中英

RenderRequest上的協議重定向

[英]Protocol redirection upon RenderRequest

我正在研究一個在Liferay Portal服務器上使用Spring Portlet-MVC框架和Velocity的項目。 對於幾頁,我們需要在安全連接上為它們提供服務。 作為Portlet的新手,我想到了鏈接到Action-Method並從那里重定向的解決方案。

@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上的Interceptor和Annotations?)。

任何建議將不勝感激!

在某些頁面上,您指的是Liferay頁面,還是只關心用戶單擊portlet中的某些鏈接時生成的URL。

如果要確保Portlet的某些鏈接安全,則在使用liferay-portlet時,或使用renderURL或actionURL。 它具有一個稱為secure的屬性,如果將其設置為true,它將使您的URL以https開頭

如果您正在尋找一些liferay頁面(例如/ web / guest / mypage)以確保安全,那么它是一種hack,我真的不建議任何人這樣做,但是如果您沒有其他選擇,則可以創建服務預先掛接並檢查您關注的網址格式,然后重定向到該網址的https版本。

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());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM