Java Liferay:按屏幕名称进行身份验证

Java Liferay:按屏幕名称进行身份验证,java,authentication,liferay,Java,Authentication,Liferay,liferay的接口com.liferay.portal.security.auth.Authenticator包含不同类型的身份验证的不同原型。为了了解每种身份验证的作用,我实现了一个包含此类的测试挂钩: public class Test-hook implements Authenticator { @Override public int authenticateByEmailAddress(long arg0, String arg1, String arg2,Map<

liferay的接口com.liferay.portal.security.auth.Authenticator包含不同类型的身份验证的不同原型。为了了解每种身份验证的作用,我实现了一个包含此类的测试挂钩:

  public class Test-hook implements Authenticator { 

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

 System.out.println("successfull by email address authenticate ");  
    return SUCCESS;
}

@Override
public int authenticateByScreenName(long arg0, String arg1, String arg2,
    Map<String, String[]> arg3, Map<String, String[]> arg4)
    throws AuthException {
// TODO Auto-generated method stub
 System.out.println("successfull by screen name authenticate"); 
}
@Override
public int authenticateByUserId(long arg0, long arg1, String arg2,
    Map<String, String[]> arg3, Map<String, String[]> arg4)
    throws AuthException {
   // TODO Auto-generated method stub
System.out.println("successfull by user id authenticate");  
return SUCCESS; 
}  
}
公共类测试挂钩实现验证器{
@凌驾
public int authenticateByMailAddress(长arg0、字符串arg1、字符串arg2、映射arg3、映射arg4)引发AuthException{
System.out.println(“通过电子邮件地址验证成功”);
回归成功;
}
@凌驾
public int authenticateByScreenName(长arg0、字符串arg1、字符串arg2、,
地图arg3、地图arg4)
抛出AuthException{
//TODO自动生成的方法存根
System.out.println(“通过屏幕名称验证成功”);
}
@凌驾
public int authenticateByUserId(长arg0、长arg1、字符串arg2、,
地图arg3、地图arg4)
抛出AuthException{
//TODO自动生成的方法存根
System.out.println(“通过用户id验证成功”);
回归成功;
}  
}
因此,如果我通过portlet登录正确,将自动调用函数“authenticateByEmailAddress”,并在控制台中显示“successfull by email address authenticate”


我的问题是何时调用authenticateByScreenName和authenticateByUserId函数?这仅仅意味着我们如何在Liferay中通过屏幕名和用户ID进行身份验证?

我不确定这是否是解决方案,或者它们是否相关。但是, 在
portlet-ext.properties
中将
company.security.auth.type
设置为屏幕名称可能会解决此问题

#
# The portal can authenticate users based on their email address, screen
# name, or user id.
#
#company.security.auth.type=emailAddress
company.security.auth.type=screenName
company.security.auth.type=userId