Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-4500

InterceptData never cleared from session after continueToOriginalDestination is called

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.5.5, 1.5.6
    • 1.5.6, 6.0.0-beta2
    • wicket
    • Tomcat 6.0.29
      Linux or Windows (happens on both)

    Description

      We have a scenario where single person can log in under different accounts on the same website. Different user types will typically go to different page types.

      A single person using different accounts is not normally required but we are demonstrating to corporate clients how the system will be used by different user types. In the demonstration we need to log in as an 'admin' user to demo the admin aspects and then we need to log in as a 'standard' user to demonstrate the aspects that will apply to a standard user.

      The admin page uses RedirectToInterceptException to authentication page if no one is logged in.

      The standard page uses the home page to authenticate and throws new RestartResponseException(new AuthenticatePage(parameters)) if no one is authenticated (i.e. no intercept)

      After authentication we either continue or go to the 'default' page for a standard user.

      Code looks like this:

      If ( authenicationSucceeded )

      {

      if ( !continueToOriginalDestination() )

      { // Was not redirected to this authentication page so go to default destination for the home page // Find default page for standard users and go to that page }

      }

      What we find is that after an admin log on (with intercept/continue sequence) a subsequent standard user log on will not execute the above body because continueToOriginalDestination returns 'true' even though this page was not an intercept page.

      It looks like after an intercept/continue has occurred it does not clear the 'original destination' attribute and so a subsequent call to continueToOriginalDestination will return true when it should really return false.

      The quickstarts demonstrates the problem:

      Point browser to localhost/app/landing

      Click 'logon'
      Click 'Click to continue' - each time you click continueToOriginalDestination is called which successfully does a continue as evidenced by the page counter incrementing.

      If running in a debugger set a break point on RestartResponseAtInterceptPageException.InterceptData.clear().
      Restart the app and then click on 'logon' and you will never see the clear method executed.

      Attachments

        Activity

          People

            mgrigorov Martin Tzvetanov Grigorov
            chrisc Chris Colman
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: