这是一个奇怪的问题。Liferay 6.0.6 的 Ext 插件可以在除 centos 或 RHEL 之外的任何操作系统平台上执行。
现在我将尽力解释我的实验。
首先,我创建了login-hook
一个添加验证码图像的位置$LIFERAY_SDK_DIR/hooks/login-hook/docroot/custom-jsps/html/portlet/login/login.jsp
:
<portlet:actionURL windowState="<%= LiferayWindowState.EXCLUSIVE.toString() %>" var="captchaURL">
<portlet:param name="struts_action" value="/login/captcha" />
</portlet:actionURL>
<liferay-ui:captcha url="<%= captchaURL %>" />
并对以下内容进行修改/html/taglib/ui/captcha/simplecaptcha.jsp
:
<div class="taglib-captcha">
<table border=0>
<tr>
<td>
<aui:input label="text-verification" name="captchaText" size="10" type="text" value="" />
</td>
<td style="padding-left:10px;">
<img id="captcha_image" alt="captcha" class="captcha" src="<%= url %>" />
</td>
<td>
<a href="#" id="captcha_change_btn" class="captcha"
onclick="return false;"><liferay-ui:message key="change_captcha" />
</a>
</td>
</tr>
</table>
<aui:script>
jQuery.noConflict();
jQuery(function ($) {
$('#captcha_change_btn').click(function () {
var url = "<%= url %>";
$('#captcha_image').attr('src', url + '&random=' + Math.random());
});
});
</aui:script>
</div>
部署login-hook
到 liferay 后,登录窗口将如下所示:
其次,我创建了一个login-ext
将在登录时检查用户提供的验证码文本。所以我添加代码
_log.warn("check the captcha ... ");
CaptchaUtil.check(actionRequest);
System.out.println("success check captcha");
在protected void login(
ThemeDisplay themeDisplay, ActionRequest actionRequest,
ActionResponse actionResponse, PortletPreferences preferences)
throws Exception
的$LIFERAY_EXT_DIR/ext/login-ext/docroot/WEB-INF/ext-impl/src/com/liferay/portlet/login/action/LoginAction.java
部署login-ext
,然后尝试在不提供验证码文本的情况下登录将导致正确的错误。但是当我将整个 liferay 系统移动到 centos 5.8 时,将通过没有验证码文本的登录。
谁能给我一个建议?谢谢