【问题标题】:How to set a Cookie in Liferay portlet?如何在 Liferay portlet 中设置 Cookie?
【发布时间】:2010-09-20 06:51:40
【问题描述】:

我在尝试在 Liferay 6.0 portlet 中设置会话 cookie 时遇到问题。我希望能够为客户端浏览器设置一个 cookie,以存储用于linkedin 身份验证的应用程序密钥,然后其他 portlet 可以在其中检索它。

我可以通过以下方式读取 cookie:

public void addLinkedInCV(ActionRequest request, ActionResponse response)
        throws PortalException, SystemException {

    HttpServletRequest convertReq = PortalUtil.getHttpServletRequest(request);
    Cookie[] cookies = convertReq.getCookies();
    ...
}

这是我阅读失败的尝试。

@Override
public void doView(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException {

    HttpServletResponse convertRes = PortalUtil.getHttpServletResponse(renderResponse);
    HttpServletResponse originalRes = (HttpServletResponse) ((HttpServletResponseWrapper) convertRes).getResponse();

    Cookie linkedInCookie = new Cookie("linkedIn", util.getAppKey());
    originalRes.addCookie(linkedInCookie);
}

【问题讨论】:

    标签: java portlet liferay


    【解决方案1】:

    在不大量修改 Liferay 门户本身的情况下,我发现设置 portlet cookie 的唯一方法是让 portlet 生成一个 javascript,然后让客户端设置 cookie。

    所以我在 doView 方法中添加了以下内容。

    if (renderRequest.getPortletSession(true).getAttribute("set_cookie")!=null){
        return;
    }
    
    String cookie_value = renderRequest.getPortletSession(true).getId();
    String cookie_hours = "6";
    
    StringBuffer buf = new StringBuffer();
    buf.append("\n <script>");
    buf.append("\n var today = new Date();");
    buf.append("\n var expires_date = new Date ( today.getTime() + (" + cookie_hours + "*1000*60*60) );");
    buf.append("\n document.cookie = \"linkedIn=" + util.getAppKey() + ";expires=\"+expires_date.toGMTString();");    
    buf.append("\n </script>");
    
    renderResponse.setContentType("text/html");
    PrintWriter out = renderResponse.getWriter();
    out.println(buf.toString());
    renderRequest.getPortletSession(true).setAttribute(SET_COOKIE, cookie_value);
    

    虽然不是最佳解决方案,但仍是可行的解决方案;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      相关资源
      最近更新 更多