Author: ivaynberg
Date: Thu Aug 26 21:30:59 2010
New Revision: 989939

URL: http://svn.apache.org/viewvc?rev=989939&view=rev
Log:

Issue: WICKET-2903

Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsConfig.java
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsRequestCycleProcessor.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsConfig.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsConfig.java?rev=989939&r1=989938&r2=989939&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsConfig.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsConfig.java
 Thu Aug 26 21:30:59 2010
@@ -27,6 +27,12 @@ public class HttpsConfig
        private int httpsPort = 443;
 
        /**
+        * A flag which can be used to configure {...@link 
HttpsRequestCycleProcessor} to bind or not the
+        * session before switching to secure (https) mode
+        */
+       private boolean preferStateful = true;
+
+       /**
         * Constructor
         */
        public HttpsConfig()
@@ -84,4 +90,31 @@ public class HttpsConfig
        {
                return httpsPort;
        }
+
+       /**
+        * @see #setPreferStateful(boolean)
+        * @return preferStateless
+        */
+       public boolean isPreferStateful()
+       {
+               return preferStateful;
+       }
+
+       /**
+        * Sets whether or not a new session is created before redirecting from 
{...@code http} to
+        * {...@code https}
+        * <p>
+        * BE VERY CAREFUL WHEN SETTING THIS VALUE TO {...@code false}.
+        * 
+        * If set to {...@code false} it is possible that the session created 
when in {...@code https} pages
+        * will not be accessible to {...@code http} pages, and so you may end 
up with two sessions per
+        * user both potentially containing different login information.
+        * </p>
+        * 
+        * @param preferStateful
+        */
+       public void setPreferStateful(boolean preferStateful)
+       {
+               this.preferStateful = preferStateful;
+       }
 }

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsRequestCycleProcessor.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsRequestCycleProcessor.java?rev=989939&r1=989938&r2=989939&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsRequestCycleProcessor.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/https/HttpsRequestCycleProcessor.java
 Thu Aug 26 21:30:59 2010
@@ -209,9 +209,12 @@ public class HttpsRequestCycleProcessor 
        @Override
        public IRequestTarget resolve(RequestCycle rc, RequestParameters rp)
        {
+               if (portConfig.isPreferStateful())
+               {
                // we need to persist the session before a redirect to https so 
the session lasts across
                // both http and https calls.
                Session.get().bind();
+               }
 
                IRequestTarget target = super.resolve(rc, rp);
                return checkSecure(target);


Reply via email to