gpt4 book ai didi

java - 如何在 Liferay portlet 中设置 Cookie?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:23 24 4
gpt4 key购买 nike

我在尝试在 Liferay 6.0 portlet 中设置 session cookie 时遇到问题。我希望能够为客户端浏览器设置一个 cookie 来存储用于 linkedin 身份验证的应用程序 key ,然后其他 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);
}

最佳答案

在没有大量修改 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);

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

关于java - 如何在 Liferay portlet 中设置 Cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3749199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com