Liferay 7 - 我需要让模拟用户 URL 动态化

Liferay 7 - I need to make the impersonate user URL dynamic

我正在使用自定义登录页面挂钩项目 (https://github.com/opensourceforlife/CustomLandingPage-Hook) 将用户定向到他们关联的组织的私有站点。当实际用户登录时,钩子工作正常。

但我有一个要求允许管理员模拟用户,这也可以正常工作,但只能配置为打开一个特定页面。

我需要的是根据自定义登录页面挂钩的逻辑(我可以轻松实现的逻辑)进行 URL 更改。结果将是管理员最终会进入他们正在模拟的用户的正确页面。

我已经调查过了,URL 是由在 com.liferay.taglib.security.DoAsURLTag.java

中实现的 标签生成的

我相信我能够编写代码来创建正确的 URL,但是我不确定如何覆盖现有代码。我以前做过 JSP 挂钩,但我从未覆盖过标签库 class(也没有覆盖 OSGI 包中的任何 class - 只是 JSPs)。我不得不相信这是可能的,但我还没有找到任何指导(是的,我确实看过......)。

我建议将 URL 替换为自定义生成的代码(从一开始就生成正确的 URL)并更改 JSP,而不是更改代码的实现使用您找到的标签的位置。

据我所知,这是一个您可以选择模拟用户的地方,因此工作量应该相对较小。作为一个积极的副作用:更改标签实现不会自动重新编译 JSP,因此您可能仍然会得到陈旧的代码(取决于标签的实现性质,我没有看) .

用自定义实现替换 URL 也应该比在 taglib 上进行心脏直视手术更容易和更直接。