我有两个UsernamePasswordForm类作为authenticators
SampleUsernamePasswordForm和SecurityUsernamePasswordForm
如果SampleUsernamePasswordForm成功,则不需要迁移到SecurityUsernamePasswordForm,但如果存在凭据错误,我希望绕过SampleUsernamePasswordForm身份验证器,移到SecurityUsernamePasswordForm。
两者现在都在ALTERNATIVE下面,这意味着如果一个失败了,它应该移到下一个
在SampleUsernamePasswordForm,我试过
if (!validateForm(context, formData)) {
Response challengeResponse = challenge(context, getDefaultChallengeMessage(context), FIELD_PASSWORD);
context.failureChallenge(AuthenticationFlowError.INVALID_CREDENTIALS, challengeResponse);
}和
if (!validateForm(context, formData)) {
context.failure(AuthenticationFlowError.INVALID_CREDENTIALS);
}我以为在这上面调用context.failure会触发SecurityUsernamePasswordForm,但它只是在同一个登录表单上显示了错误消息。
目前,我不得不求助于必须将SecurityUsernamePasswordForm登录到SampleUsernamePasswordForm中的地方,这看上去并不整洁。如何跳到SecurityUsernamePasswordForm
另外,由于某些原因,SampleUsernamePasswordForm对象在authenticate被调用之前创建了3-5次,这是身份验证器可以发生的事情吗?
发布于 2022-04-04 07:43:52
如果这两种执行都是ALTERNATİVE,则只需调用尝试即可。
在SampleUsernamePasswordForm上只需传递到下一次执行(SecurityUsernamePasswordForm)。但是,只要确保至少有一个失败或成功必须返回到流的尽头。
https://stackoverflow.com/questions/71731010
复制相似问题