gpt4 book ai didi

java - RenderRequest 上的协议(protocol)重定向

转载 作者:行者123 更新时间:2023-12-02 00:26:52 24 4
gpt4 key购买 nike

我正在开发一个在 Liferay Portal 服务器上使用 Spring Portlet-MVC 框架和 Velocity 的项目。对于一些页面,我们需要通过安全连接为它们提供服务。由于对 Portlet 相当陌生,我想出了链接到操作方法并从那里重定向的解决方案。

@ActionMapping(params = "command=secureRedirect")
public void actionSecureRedirect(ActionRequest request, ActionResponse response) {
HttpServletRequest servletRequest = PortalUtil.getHttpServletRequest(request);
String absoluteUrl = servletRequest.getRequestURL().toString();
String[] urlComponents = StringUtils.split(absoluteUrl, '/');
StringBuffer redirectUrl = new StringBuffer("https://");
redirectUrl.append(urlComponents[1]);
redirectUrl.append("<specificPath>");
response.sendRedirect(redirectUrl.toString());
}

我的解决方案有效,但对我来说它似乎不太好。我想知道是否有人可以想出另一种更透明的方法来做到这一点(也许在渲染映射上使用拦截器和注释?)。

如有任何建议,我们将不胜感激!

最佳答案

某些页面是指 Liferay 页面,还是您只关心当用户单击 portlet 中的某些链接时生成的 url。

如果您想让 portlet 的某些链接安全,那么请使用 liferay-portlet 风格或 renderURL 或 actionURL。它有一个名为 secure 的属性,如果设置为 true 将使您的 url 以 https 开头

如果你正在寻找一些liferay页面(例如/web/guest/mypage)来确保安全,那么它就是一种黑客行为,我不会向任何人建议这样做,但如果你没有其他选择,你可以创建一个服务预 Hook 并检查您关心的 url 模式并重定向到该 url 的 https 版本。

关于java - RenderRequest 上的协议(protocol)重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818967/

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