Как я могу перенаправить на исходный URL-адрес запроса с помощью Java EE Security @CustomFormAuthenticationMechanismDefinition

Когда я использую

@FormAuthenticationMechanismDefinition(
        loginToContinue = @LoginToContinue(
                loginPage = "/login.xhtml",
                useForwardToLogin = false))

затем, после успешного входа в систему, пользователь перенаправляется на исходную страницу, которую он запросил.

Но я хотел бы больше контролировать форму аутентификации, поэтому вместо этого я использую:

@CustomFormAuthenticationMechanismDefinition(
        loginToContinue = @LoginToContinue(
                loginPage = "/login.xhtml",
                useForwardToLogin = false))

Я следовал этому примеру: https://rieckpil.de/howto-simple-form-based-authentication-for-jsf-2-3-with-java-ee-8-security-api/

Но проблема в том, что теперь, после успешного входа в систему, пользователь всегда перенаправляется на index.xhtml, а не на исходную страницу, которую он запрашивал.

Есть ли способ добиться того же поведения с CustomFormAuthenticationMechanismDefinition?


person Jimmy Praet    schedule 06.06.2020    source источник
comment
Как бы вы сделали это с простой (не jsf/facelets) html-страницей? И выполните google. com/ дал мне несколько советов... Пробовали?   -  person Kukeltje    schedule 07.06.2020
comment
Да, и код, который вы используете, в минимально воспроизводимом примере должен быть встроенным. В противном случае есть шанс, что источник удаления исчезнет, ​​и никто не узнает, что это был за код. И есть большая разница между кодом в ссылке, которую вы разместили, и тем, что я прочитал в примере в спецификациях безопасности java-ee. Если вы опубликуете минимально воспроизводимый пример, я напишу что-то в ответе, который может быть ответом или нет ( компа под рукой нет чтобы проверить)   -  person Kukeltje    schedule 07.06.2020
comment
Существует не так много информации об использовании CustomFormAuthenticationMechanismDefinition из нового Java EE Security API JSR375. Поисковый запрос Google, который вы разместили выше, на первый взгляд не дает никаких полезных результатов. Большинство результатов относятся к Spring Framework или более старым версиям Java EE до появления нового API. Я также не вижу большой разницы между примером, который я разместил, и примером в спецификации: javaee.github.io/security-spec/spec/. Я посмотрю на это, спасибо в любом случае.   -  person Jimmy Praet    schedule 08.06.2020
comment
Тем не менее, пожалуйста, пожалуйста, сделайте минимально воспроизводимый пример в вопросе. В противном случае он будет закрыт.   -  person Kukeltje    schedule 08.06.2020


Ответы (1)


Я заработал, добавив ajax="false" к моему p:commandButton. Java EE Security Framework правильно устанавливал заголовок перенаправления, но PrimeFaces p:commandButton игнорировал его.

person Jimmy Praet    schedule 08.06.2020
comment
Хороший улов... Я тоже пропустил это... и для меня было еще хуже пропустить это, так как я столкнулся с той же проблемой с бывшим доморощенным фреймворком AA, все еще минимальный воспроизводимый пример в вопросе очень ценится. Но что IS странно, так это то, что вы были перенаправлены на страницу индекса... и пример, на который вы ссылаетесь, не имеет ajax=false Теперь я все еще немного запутался. Еще одна причина для минимально воспроизводимого примера в вопросе с ошибкой в ​​нем - person Kukeltje; 08.06.2020
comment
Ах да, была еще одна часть проблемы. Я неправильно установил флаг newAuthentication для javaee.github.io/security-api/apidocs/javax/security/enterprise/ в true в качестве обходного пути, потому что я остался на странице входа после успешного входа. Это объясняет перенаправление на индексную страницу, поскольку в этом случае SEND_CONTINUE не используется. Вместо этого было возвращено SUCCESS, а пример кода перенаправляется на index.xhtml. У меня нет времени приводить чистый пример, но я надеюсь, что это может помочь людям, столкнувшимся с той же проблемой. - person Jimmy Praet; 08.06.2020
comment
минимальный воспроизводимый пример можно (почти) скопировать/вставить из опубликованной вами ссылки. Отсутствие времени на создание минимально воспроизводимого примера не является хорошим стимулом (даже наоборот) для нас, чтобы попробовать помочь. Кроме того, это противоречит рекомендациям SO, и вопрос может быть закрыт из-за отсутствия минимального воспроизводимого примера. Пожалуйста, уделите 10-15 минут и создайте - person Kukeltje; 08.06.2020