我正在使用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;
}
}
答案 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;财产,这基本上迫使它。