如何覆盖默认的Liferay登录身份验证?

时间:2012-05-17 11:00:34

标签: liferay-6

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

到目前为止,我已经创建了一个hook-plugin并在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;  
  }  

}  

3 个答案:

答案 0 :(得分:4)

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

auth.pipeline.enable.liferay.check=false

答案 1 :(得分:1)

在文件portal.properties

中的钩子项目中记住
place auth.pipeline.pre =com.liferay.portal.security.auth.MyCustomAuthenticator 
auth.pipeline.enable.liferay.check = false

以及portal-ext-properties

答案 2 :(得分: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中删除了2行。在您的自定义身份验证器中,而不是仅返回SUCCESS,(com.liferay.portal.security.auth.Authenticator.SUCCESS)

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

这应该强制它起作用。我相信源代码(对于Liferay 6.2 ga5)没有正确考虑到&#34; Skip Liferay Check&#34;财产,这基本上迫使它。