问题是我试图在
authenticate()
action()
.
另外
MultivaluedMap
Context
下面的解决方案是从
this question
public class CustomUPForm extends UsernamePasswordForm implements Authenticator {
@Override
public void authenticate(AuthenticationFlowContext context) {
Response challenge = context.form()
.createForm("custom-up-form.ftl");
context.challenge(challenge);
}
@Override
public void action(AuthenticationFlowContext context) {
System.out.println("Processing form...");
MultivaluedMap<String, String> formData = context.getHttpRequest().getDecodedFormParameters();
formData.putSingle("username", "xxxxx");
formData.putSingle("password", "xxxxx");
if (!validateForm(context, formData)) {
return;
}
context.success();
}
}
注意,在这个例子中
validateForm()
包含一些自定义验证逻辑,这些逻辑对于本问题的范围来说是不必要的。但是,用户名和密码的值可以通过调用
getFirst()
formData.getFirst("username");