更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是啥?

Posted

技术标签:

【中文标题】更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是啥?【英文标题】:What's the best way to change the "OpenId Connect" link in the Liferay login page?更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是什么? 【发布时间】:2021-11-30 10:53:31 【问题描述】:

我们在 Liferay 7.3 门户中添加了多个社交登录。其中包括内置的 Facebook 和 OpenId Connect 功能以及 Twitter、LinkedIn 等的自定义过滤器。 OpenId Connect 已配置为使用 Google 登录。

一切正常,但我需要将登录页面中的链接从“OpenId Connect”更改为“Google”。

我发现该值是在 portal-security-sso-openid-connect-api 模块的语言文件中的键 open-id-connect-configuration-name 中设置的。然后通过 com.liferay.portal.settings.authentication.openid.connect.web.internal.portal.settings.configuration.admin.display.OpenIdConnectPortalSettingsConfigurationScreenContributor 类的 getName() 方法访问它。我相信这个贡献者将值提供给导航器以用作标签。

我的问题是更改此值的最简单和最可维护的方法是什么?我的想法是提供备用 Language_*.properties 文件,但我不确定如何覆盖现有文件。 portal-security-sso-openid-connect-api 模块的 JSP 钩子允许我这样做吗?

【问题讨论】:

【参考方案1】:

我不知道一个干净的方法 - 希望有人会加入其中 - 但我遇到了同样的问题,不得不在 navigation.jspf 中使用一小段 javascript 来解决它:

<script>
    $( document ).ready(function() 
        $(".taglib-text").filter(function () 
        return ($(this).text() === 'OpenId Connect')
    ).text("Google");
);
</script>

虽然这可行,但仍然有点奇怪,因为单击链接将转到 OpenId Connect portlet,该 portlet 有一个下拉菜单,其中包含一个已选中的项目 - Google,然后用户必须单击另一个登录按钮。我知道这是为了允许多个 OpenID Connect 客户端,但我肯定喜欢 Google 的直接方法。

【讨论】:

感谢您的回复。这不是我的想法,但我可能会在等待的时候这样做。 同意。我会考虑你为我自己使用的任何解决方案。 我会说这符合您的问题“什么是最简单和最可维护的方式”。其他选项,例如引入 JSP 片段可能看起来更优雅,但您必须维护它们(与原始实现的差异)。话虽这么说:JSP 片段是一种选择,但我个人的偏好是:如果我可以不用,我可以为自己节省维护负担。 感谢@Olaf Kock。我始终重视并相信您的意见。

以上是关于更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

liferay 指定默认首页

如何链接到另一个 liferay 页面

检查 Liferay 管理员用户登录

当我链接到另一个页面时,Liferay 6.1 PortletSession ID 在 Google Chrome 的 iframe 中发生了更改

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?