1

我正在使用 Liferay 6.1,我想覆盖默认的 Liferay 登录身份验证并设置我的自定义身份验证。

到目前为止,我所做的是,我创建了一个钩子插件并在 portal.properties 文件中设置了以下属性

auth.pipeline.pre=com.liferay.portal.security.auth.MyCustomAuthenticator
auth.pipeline.enable.liferay.check=false

其中 MyCustomAuthenticator 是我的自定义身份验证器类(它实现了 Authenticator)。

目前,Liferay 会首先检查此自定义身份验证,但随后又会转到 Liferay 本身进行进一步的 Liferay 身份验证。

我想覆盖这个 Liferay 验证。请帮我解决这个问题。这是我的身份验证器类:

public class MyCustomAuthenticator implements Authenticator {  

  public int authenticateByEmailAddress(long arg0, String arg1, String arg2, Map<String, String[]> arg3, Map<String, String[]> arg4) throws AuthException {  

    System.out.println("succeeded by mail");  
    return SUCCESS;  
  }  

 public int authenticateByScreenName(long arg0, String arg1, String arg2, Map<String, String[]> arg3, Map<String, String[]> arg4) throws AuthException {  

    System.out.println("succeeded by screen name");  
    return SUCCESS;  
  }  

 public int authenticateByUserId(long arg0, long arg1, String arg2, Map<String, String[]> arg3, Map<String, String[]> arg4) throws AuthException {  

    System.out.println("succeeded by user id");  
    return SUCCESS;  
  }  

}  
4

3 回答 3

4

在 portal-ext.properties 中添加以下属性,然后重新启动服务器

auth.pipeline.enable.liferay.check=false
于 2012-05-18T08:22:06.673 回答
1

在您的钩子项目中记住文件portal.properties

place auth.pipeline.pre =com.liferay.portal.security.auth.MyCustomAuthenticator 
auth.pipeline.enable.liferay.check = false

以及在门户网站扩展属性中

于 2013-04-09T16:31:56.900 回答
0

我以同样的方式制作了一个钩子,在我的钩子 portal.properties 覆盖中使用了这两行,并且在 portal-ext.properties 中进行了很好的衡量:

auth.pipeline.pre=com.liferay.portal.security.auth.MyCustomAuthenticator
auth.pipeline.enable.liferay.check=false

但是,即使帐户已经存在,它似乎也不想登录 Liferay。我能够让它完全工作并完全跳过 Liferay 身份验证。我只需要覆盖portal.properties 的钩子,我从portal-ext 中删除了这两行。在您的自定义身份验证器中,而不是仅仅返回成功,(com.liferay.portal.security.auth.Authenticator.SUCCESS)

您想返回 SKIP_LIFERAY_CHECK 。这与 SUCCESS 相同,只是要确保身份验证管道知道跳过 liferay 检查。

This should force it to work. I believe the source code (for Liferay 6.2 ga5) does not properly take into account the "Skip Liferay Check" property, and this essentially forces it.

于 2016-07-06T14:08:58.257 回答