Skip to content

[#2232] Resubmit without login - #2907

Merged
lprimak merged 59 commits into
apache:mainfrom
lprimak:resubmit-without-login
Oct 14, 2026
Merged

lprimak merged 59 commits into
apache:mainfrom
lprimak:resubmit-without-login

Conversation

@lprimak

@lprimak lprimak commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

fixes #2232

Summary

Shiro's Jakarta EE support can now resubmit a form after session expiry without a login page or "session expired" screen, and the resubmission mechanism itself has been reworked to be safer and more robust.

What changed

  • Replay without a login flow: when a POST arrives with a session id that no longer resolves to a session, and the subject is remembered or anonymous, the saved form is replayed in place as soon as the security chain permits it. Pages that require login still save the form and replay it after login. Only same-origin application/x-www-form-urlencoded submissions are replayed in place. With client-side Faces state saving no in-place replay is needed, since the view state travels with the request and is not lost with the session; replay after login still works.

Testing

New unit tests (FormResubmitRequestTest, FormResubmitResponseTest, FormResubmitSupportCookiesTest, SavedFormDataTest, DirectResubmitCandidateTest, updated FormSupportTest) and expanded integration tests in ShiroAuthFormsIT with a new unprotected form page.

Note

Stacked on top of, and depends on #2900

Following this checklist to help us incorporate your contribution quickly and easily:

  • Make sure there is a GitHub issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a GitHub issue. Your pull request should address just this issue, without pulling in other changes.
  • Format the pull request title like [#XXX] - Fixes bug in SessionManager,
    where you replace #XXX with the appropriate GitHub issue. Best practice
    is to use the GitHub issue title in the pull request title and in the first line of the commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • add fixes #XXX if merging the PR should close a related issue.
  • Run mvn verify to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
  • Committers: Make sure a milestone is set on the PR
  • Committers: Use "Squash and Merge" to combine all commits into one when merging a PR when appropriate.

Trivial changes like typos do not require a GitHub issue (javadoc, comments...).
In this case, just format the pull request title like [DOC] - Add javadoc in SessionManager.

If this is your first contribution, you have to read the Contribution Guidelines

If your pull request is about ~20 lines of code you don't need to sign an Individual Contributor License Agreement
if you are unsure please ask on the developers list.

To make clear that you license your contribution under the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@github-actions github-actions Bot added xml and removed documentation labels Oct 9, 2026
@lprimak lprimak changed the title Resubmit without login [#2232] Resubmit without login Oct 10, 2026
@lprimak
lprimak marked this pull request as ready for review October 13, 2026 20:45
@lprimak
lprimak merged commit 1b7b8b5 into apache:main Oct 14, 2026
19 checks passed
@lprimak
lprimak deleted the resubmit-without-login branch October 14, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

java Pull requests that update Java code tests xml

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Enhancement] Form resubmit without a login page

3 participants