如何在 Liferay portlet 中设置 Cookie?

2023-11-27

我在尝试设置会话 cookie 时遇到问题Liferay 6.0 portlet。我希望能够向客户端浏览器设置一个 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);
}

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

尽管如此,这不是一个最佳的解决方案,但却是一个有效的解决方案;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Liferay portlet 中设置 Cookie? 的相关文章

  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 不支持的字段:将瞬间格式化为日期 ISO 时的年份[重复]

    这个问题在这里已经有答案了 我正在尝试将 Instant 格式化为 ldap 日期 ISO8601 但在 f format Instant now 处失败 String input 20161012235959 0Z DateTimeFor
  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • 如何将本机数据库运算符 (postgres ~) 与 JPA 标准生成器一起使用?

    我使用 JPA 2 0 标准构建以下查询 简化 select n from notif n where n message b la 我正在使用 postgresql 数据库 我真的需要 运算符 而不是像 我可以使用与 CriteriaBu
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • 使用全局变量从内部函数获取空字符串

    请帮助我解决一些小问题 我确信你能做到 D 我试图在 firestore 文档 user cases information 上设置一个字段 其中包含一个字段 case number 首先我声明这个全局变量 private String c
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • FileObserver 不适用于 Android 6.0 Marshmallow (API 23) 中的外部存储

    我有一个应用程序可以观察外部存储上的公共目录FileObserver 它运行良好Lollipop设备 我想添加对Marshmallow 所以我用它设置了一台 Nexus 9 平板电脑 在 Marshmallow 设备上 它失败 在 Loll
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • RxJava android mvp 单元测试 NullPointerException

    我是 mvp 单元测试的新手 我想对演示者进行一个非常基本的测试 它负责登录 我只想断言 view onLoginSuccess 这是演示者代码 public LoginPresenter LoginViewContract loginVi
  • 错误膨胀类 android.support.design.widget.NavigationView [启动时崩溃]

    该应用程序应该有一个导航抽屉 可以从左侧拉出并显示各种活动 但是一旦将导航栏添加到 XML Activity homescreen 文档中 应用程序一启动就会崩溃 主屏幕 java package com t99sdevelopment c
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • com.sun.xml.ws.message.saaj.SAAJHeader 无法转换为 com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader

    我正在尝试访问第三方 Web 服务 该服务要求我创建一个传递时间信息 用户名和密码的安全标头 我在网上搜索了可行的示例 并尝试了多种方法 我正在尝试使用 Java 6 中内置的内容来做到这一点 我不确定我做错了什么 从 WSDL 生成 We
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF

随机推荐

  • Google Chrome 扩展程序中有多个后台脚本?

    我的任务是创建一个 Google Chrome 扩展程序 到目前为止 一切正常 但是 我希望能够使用多个后台脚本 我的意思是 background scripts background js 如果我所说的不清楚 而不是创建多个扩展 这可能吗
  • npm install 不安装任何依赖项

    我正在尝试安装软件包package json文件 不幸的是 当我跑步时npm install 什么也没有发生 没有安装任何东西 我用过npm install在其他存储库上并且它可以成功运行 这是我的路径 PATH Users me rben
  • Ruby 中使用 net-sftp 进行基于密钥的身份验证

    我希望能够使用 SFTP 登录多个服务器并下载某些文件 以帮助在问题出现时进行调试 虽然我们可以使用客户端 但我们希望开始自动化流程以简化一切 我的第一次尝试看起来像这样 def download files to download des
  • 通过比较行中的列来过滤 Pandas DataFrame

    我的数据框中的每一行都有两个日期列 如何过滤掉 日期 A 在 日期 B 之后的行 例子 symbol reports at as of signal A 2012 02 15T21 00 00Z 2012 02 01T12 00 00Z 6
  • 强制可选参数使用更广泛的类型,并具有更严格的默认值

    有没有办法进行可选参数f足够灵活 有类型 a gt b 但仍将其默认为identity 鉴于identity有类型 a gt a 之前的一个问题 begins通过准确地陈述我的问题 我想定义一个接受可选参数的函数 该参数是 一个函数 a g
  • 语音中的关键字识别[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有谁知道有一个免费的关键字识别系统 并且可能提供 API CMU Sphinx 4 和 MS Speech API 是语音识别引擎 不能用于 KWS
  • 在 Java 的 main() 中对 Thread 实例运行 wait()

    我正在尝试 java lang Object 中 wait 的定时版本 并观察到它在两种不同场景中的行为有所不同 场景1 使用Thread中run 的默认定义 public static void main String args thro
  • scanf 是否保证在失败时不会更改值?

    If a scanffamily 函数无法匹配当前说明符 是否允许写入成功时存储该值的存储 在我的系统上有以下输出213两次 但这能保证吗 标准中的语言 C99或C11 似乎没有明确规定原始值应保持不变 无论是否不确定 include
  • JavaScript 错误 - 找不到变量:谷歌

    我编写的代码在浏览器上运行得非常好 但是当我连接到 iPhone 上的 wifi 时 我在调试器中收到错误 JavaScript 错误 找不到变量 谷歌 每当我调用任何谷歌地图 方向 地理位置对象时都会发生这种情况 代码如下 map new
  • 使用 SVN 和 Eclipse 正确设置 GWT 项目

    我正在尝试使用 Eclipse 和 Google Web Toolkit 开发一个小项目 这是一个 小型 小组项目 所以我想使用 SVN 到目前为止 我已经在 Eclipse 中创建了一个 GWT 项目并将其添加到我的 SVN 存储库中 问
  • 如何减少 Entity Framework 4 查询编译时间?

    摘要 我们遇到了 EF4 查询编译时间超过 12 秒的问题 缓存查询只能让我们到目前为止 有什么方法可以真正减少编译时间吗 我们可以寻找哪些可能做错的事情吗 谢谢 我们有一个通过 WCF 服务公开的 EF4 模型 对于每种实体类型 我们公开
  • 为什么 Scala 改变了关系运算符与相等运算符的相对优先级(与 Java 相比)?

    在Java中 更新 这实际上是语言规范中的一个错误 在 Scala 中 在Scala 中它不是相反的 尝试这个 val what 5 8 lt 4 我收到编译时警告 comparing values of types Boolean and
  • mysql group by 返回最小值并获取对应行数据

    我有一个像这样的数据表 PK table merchantName price Product 1 argos 7 4 2 comet 3 4 1 Dixon 1 3 1 argos 10 4 我希望在mysql中选择产品的最低价格和相应的
  • 将 ajax 结果附加到 div

    我正在对 IMDb API 进行 ajax 调用 以获取 肖申克的救赎 的电影数据 我希望将这些数据放入我创建的 div 中 div div 我当前的js代码 init function init ajax dataType json ur
  • 如何测量Java线程的执行时间?

    我想测量Java中线程的执行时间 现在我正在监视线程的开始和结束时间 但我认为它不太准确 因为线程在执行期间可能会被挂起 Java MXBeans 可以提供每线程 CPU 时间 import java lang management Man
  • “@+android:id/title”是什么意思?

    正常情况下 我们应该使用 id 定义一个 id 并使用 id引用一个 id 今天我发现 android id title in apps settings res layout preferenc progress xml 如何理解它以及如
  • 比较相等的日期时间返回 false

    我有一个关于如何在 C 中比较 存储日期时间的查询 考虑以下代码 var createdDate DateTime Now using cr new LanguageDictionaryRepository ds cr Add new Sy
  • 在 Rcpp 中构造 3D 数组

    我正在尝试使用提供的维度列表将 1D 数组映射到 3D 数组 这是我的组件 SEXP data my 1D array I can initialise new 3D vector in the following way NumericV
  • Angular ngx-mat-select-search 自定义组件

    我正在尝试使用 ngx mat select search 组件在我的应用程序中放置一个带有搜索栏的 mat select 样式下拉菜单 https www npmjs com package ngx mat select search 我
  • 如何在 Liferay portlet 中设置 Cookie?

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