You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/04/10 09:01:12 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/generators StaticInterceptor.java

costin      01/04/10 00:01:12

  Modified:    src/share/org/apache/tomcat/modules/aaa
                        AccessInterceptor.java
               src/share/org/apache/tomcat/modules/generators
                        StaticInterceptor.java
  Log:
  Second part of the URL-based session + authentication.
  
  If the original URI is a directory, the form login will be displayed,
  then after submitting the user/pass the redirect to ../dir/;jsessionid=...
  will work fine, but then StaticInterceptor will do another redirect
  to dir/index.jsp ( without session ).
  
  Now StaticInterceptor is fixed ( that should solve other cases as well ).
  
  Of course, as previously form-based login + apache is a difficult case
  ( unless you redirect everything to tomcat - but then what's the point
  of having apache ).
  
  Revision  Changes    Path
  1.10      +3 -1      jakarta-tomcat/src/share/org/apache/tomcat/modules/aaa/AccessInterceptor.java
  
  Index: AccessInterceptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/aaa/AccessInterceptor.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AccessInterceptor.java	2001/04/10 06:26:15	1.9
  +++ AccessInterceptor.java	2001/04/10 07:01:11	1.10
  @@ -459,6 +459,7 @@
   	ServerSession session=req.getSession( false );
   	// we didn't had a session
   	boolean noSession= ( session==null );
  +	if( debug>0 ) log( "Form handler called with no session ");
   
   	String page=ctx.getFormLoginPage();
   	String errorPage=ctx.getFormErrorPage();
  @@ -476,6 +477,7 @@
   	    session.removeAttribute( "j_password");
   	    req.setAttribute("javax.servlet.error.message",
   			     errorPage );
  +	    if( debug>0) log( "Redirecting to " + errorPage );
   	    contextM.handleStatus( req, res, 302 ); // redirect
   	    return;
   	}
  @@ -496,7 +498,7 @@
   			      originalLocation);
   	if( debug > 0 )
   	    log("Redirect1: " + page  + " originalUri=" +
  -		req.requestURI().toString());
  +		originalLocation );
   
   	req.setAttribute("javax.servlet.error.message",
   			 page );
  
  
  
  1.11      +15 -0     jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java
  
  Index: StaticInterceptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/StaticInterceptor.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- StaticInterceptor.java	2001/03/24 21:33:53	1.10
  +++ StaticInterceptor.java	2001/04/10 07:01:12	1.11
  @@ -170,6 +170,7 @@
   	// consistent with Apache
   	if( welcomeFile==null && ! requestURI.endsWith("/") ) {
   	    String redirectURI= requestURI + "/";
  +	    redirectURI=fixURLRewriting( req, redirectURI );
   	    req.setAttribute("javax.servlet.error.message",
   			     redirectURI);
   	    if( debug > 0) log( "Redirect " + redirectURI );
  @@ -194,6 +195,8 @@
   	// request, but that's not a specified behavior
   	String redirectURI=null;
   	redirectURI=concatPath( requestURI, welcomeFile);
  +	redirectURI=fixURLRewriting( req, redirectURI );
  +
   	req.setAttribute("javax.servlet.error.message",
   			 redirectURI);
   	if( debug > 0) log( "Redirect " + redirectURI );
  @@ -204,6 +207,18 @@
   	return 0;
       }
   
  +    // Fix for URL rewriting 
  +    private String fixURLRewriting(Request req, String redirectURI ) {
  +	ServerSession session=req.getSession( false );
  +	if( session != null &&
  +	    Request.SESSIONID_FROM_URL.equals(req.getSessionIdSource()))  {
  +	    String id=";jsessionid="+req.getSessionId() ;
  +	    redirectURI += id ;
  +	}
  +	return redirectURI;
  +    }
  +
  +    
       private static String concatPath( String s1, String s2 ) {
   	if( s1.endsWith( "/" ) ) {
   	    if( s2.startsWith( "/" ))