我有兩個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,但它只是在同一個登錄表單上顯示錯誤訊息
目前,我不得不求助于我必須從SecurityUsernamePasswordFormin放置登錄名的地方SampleUsernamePasswordForm,這看起來并不整潔。我該如何跳到 SecurityUsernamePasswordForm?
此外,由于某種原因,該SampleUsernamePasswordForm物件之前被創建了 3-5 次authenticate被呼叫之前被創建了 3-5 次,這是 Authenticators 可能發生的事情嗎?
uj5u.com熱心網友回復:
如果這兩個執行都是交替的,您只需呼叫
SampleUsernamePasswordForm 上的嘗試以傳遞到下一個執行(SecurityUsernamePasswordForm)。但只需確保在流程結束時必須回傳至少一個失敗或成功。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/456375.html
