Picketlink - 我如何实现同时接受使用用户名或电子邮件的身份验证
Picketlink -How can i implement an authenticating that accept use username or email at same time
人。
我需要实现在表单登录中接受用户名或电子邮件的身份验证方法。
我怀疑这是实现 PasswordCredentialHandler 及其 AbstractCredentialHandler 抽象 class。
有没有人遇到过这种情况?
更新 1
创建一个基于 class PasswordCredentialHandler 的处理程序和基于 UsernamePasswordCredential 的 Credential。在商店配置中添加新的处理程序:
@Produces
IdentityConfiguration produceIdentityManagementConfiguration() {
IdentityConfigurationBuilder builder = new IdentityConfigurationBuilder();
builder
.named("default")
.stores()
.jpa().addCredentialHandler(EmailPasswordCredentialHandler.class)
.supportAllFeatures().supportType(UserAccount.class);
return builder.build();
使用多重验证器支持或自定义验证器。
在身份验证中添加逻辑以识别用户输入的是用户名还是电子邮件,然后实例化正确的凭据。
原版
查看这个官方示例(来自 picketlink 站点):
@RequestScoped
@Named
public class AuthenticatorSelector {
@Inject Instance<CustomAuthenticator> customAuthenticator;
@Inject Instance<IdmAuthenticator> idmAuthenticator;
private String authenticator;
public String getAuthenticator() {
return authenticator;
}
public void setAuthenticator(String authenticator) {
this.authenticator = authenticator;
}
@Produces
@PicketLink
public Authenticator selectAuthenticator() {
if ("custom".equals(authenticator)) {
return customAuthenticator.get();
} else {
return idmAuthenticator.get();
}
}
}
您可以实现您的逻辑,在 selectAutheticator 方法中选择每个电子邮件登录或用户 ID,然后 @Produces
和 @Picketlink
注释提供框架您的自定义身份验证器(电子邮件登录)或 idm 身份验证器(普通用户 ID登录)。
人。 我需要实现在表单登录中接受用户名或电子邮件的身份验证方法。
我怀疑这是实现 PasswordCredentialHandler 及其 AbstractCredentialHandler 抽象 class。
有没有人遇到过这种情况?
更新 1
创建一个基于 class PasswordCredentialHandler 的处理程序和基于 UsernamePasswordCredential 的 Credential。在商店配置中添加新的处理程序:
@Produces
IdentityConfiguration produceIdentityManagementConfiguration() {
IdentityConfigurationBuilder builder = new IdentityConfigurationBuilder();
builder
.named("default")
.stores()
.jpa().addCredentialHandler(EmailPasswordCredentialHandler.class)
.supportAllFeatures().supportType(UserAccount.class);
return builder.build();
使用多重验证器支持或自定义验证器。
在身份验证中添加逻辑以识别用户输入的是用户名还是电子邮件,然后实例化正确的凭据。
原版
查看这个官方示例(来自 picketlink 站点):
@RequestScoped
@Named
public class AuthenticatorSelector {
@Inject Instance<CustomAuthenticator> customAuthenticator;
@Inject Instance<IdmAuthenticator> idmAuthenticator;
private String authenticator;
public String getAuthenticator() {
return authenticator;
}
public void setAuthenticator(String authenticator) {
this.authenticator = authenticator;
}
@Produces
@PicketLink
public Authenticator selectAuthenticator() {
if ("custom".equals(authenticator)) {
return customAuthenticator.get();
} else {
return idmAuthenticator.get();
}
}
}
您可以实现您的逻辑,在 selectAutheticator 方法中选择每个电子邮件登录或用户 ID,然后 @Produces
和 @Picketlink
注释提供框架您的自定义身份验证器(电子邮件登录)或 idm 身份验证器(普通用户 ID登录)。