3

我正在使用 Liferay 6 进行开发,我已经开发了 Liferay6 Struts2 Portlet 并进行了部署。使用自定义 JSP 挂钩,我已经覆盖了 $PORTAL_ROOT_HOME/html/portlet/login login.jsp 并创建了我自己的 jsp 页面,如图所示

<HTML>
    <HEAD>
        <TITLE>Login using jsp</TITLE>
    </HEAD>
    <BODY>
        <H1>LOGIN FORM</H1>
            <form>
                <table>
                    <tr>
                        <td> Username  : </td><td> <input name="username" size=15 type="text" /> </td> 
                    </tr>
                    <tr>
                        <td> Password  : </td><td> <input name="password" size=15 type="text" /> </td> 
                    </tr>
                </table>
                <input type="submit" value="login" />
            </form>
    </BODY>
</HTML> 

这工作正常,自定义 jsp 页面正在显示。现在请在单击提交按钮时告诉我如何编写一个验证凭证反对者数据库的 java 类。

请告诉我如何在我的班级下接收这些值并验证它们。

谢谢

4

1 回答 1

6

这个时候你可能已经找到了解决方案。如果没有,您可以尝试以下方法。

我相信您正在尝试覆盖 liferay 的登录 portlet。在这种情况下,有两种方法可以处理这种登录机制。(确保输入字段的名称与 liferay 的登录页面具有相同的名称)

  1. 扩展 liferay 的 LoginAction 类。您必须编写一个 ext 插件,或者如果您使用的是 6.0 SP2 或 6.1,您可以使用挂钩来扩展 LoginAction 类。参考mika的博客http://www.liferay.com/web/mika.koivisto/blog/-/blogs/7132115

  2. 编写你自己的类,它应该实现 liferay 的 Authenticator 接口,你必须重写 Authenticator 接口的 3 个方法。

例如,如果您要覆盖 authenticateByEmailAddress(....),则必须返回 SUCCESS(1) 或 FAILURE(-1)。我相信该方法的第二个和第三个参数是在屏幕上输入的用户 ID 和密码。请参考liferay源。

为了绕过liferay的默认认证机制,在portal-ext.properties auth.pipeline.pre=your.package.your.class上进行如下配置

Still liferay 针对自己的数据库进行检查。为避免在 portal-ext.properties 上添加以下配置。

auth.pipeline.enable.liferay.check=false。

因此,您拥有自己的自定义身份验证,您可以在其中针对您自己的数据库或您想要的任何机制进行身份验证。

更多详情http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Developing+a+Custom+Authentication+System

希望这可以帮助

于 2012-02-24T13:58:26.887 回答