You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by pe...@apache.org on 2002/11/08 07:34:49 UTC

cvs commit: modperl-docs/src/docs/1.0/guide Changes.pod modules.pod snippets.pod

pereinar    2002/11/07 22:34:48

  Modified:    src/docs/1.0/guide Changes.pod modules.pod snippets.pod
  Log:
  Moved the Apache::Cookie example from modules.pod to snippets.pod
  
  Revision  Changes    Path
  1.35      +1 -1      modperl-docs/src/docs/1.0/guide/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/Changes.pod,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Changes.pod	16 Oct 2002 14:22:00 -0000	1.34
  +++ Changes.pod	8 Nov 2002 06:34:47 -0000	1.35
  @@ -21,7 +21,7 @@
    o remove httpd.conf-perl which isn't in the dist [Matt Brooks
      <matthew.brooks (at) fedex.com>]
   
  -* modules.pod
  +* snippets.pod
   
    o Added some Apache::Cookie login page example with internal
      redirects. [Alan Bailward, <alan (at) ufies.org>]
  
  
  
  1.10      +0 -117    modperl-docs/src/docs/1.0/guide/modules.pod
  
  Index: modules.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/modules.pod,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modules.pod	8 Oct 2002 05:35:33 -0000	1.9
  +++ modules.pod	8 Nov 2002 06:34:47 -0000	1.10
  @@ -243,119 +243,6 @@
   
   (L<Apache::Request|download::third_party/Apache__Request>)
   
  -=head1 Apache::Cookie example: Login Pages by Setting Cookies and Refreshing
  -
  -On occassion you will need to set a cookie and then redirect the user
  -to another page.  This is probably most common when you want a
  -Location to be password protected, and if the user is unauthenticated,
  -display to them a login page, otherwise display another page, but both
  -at the same URL.
  -
  -=head2 Logic
  -
  -The logic goes something like this: 
  -
  -=over 4
  -
  -=item * 
  -
  -Check for login cookie
  -
  -=item * 
  -
  -If found, display the page
  -
  -=item * 
  -
  -If not found, display a login page
  -
  -=item * 
  -
  -Get username/password from a POST
  -
  -=item * 
  -
  -Authenticate username/password
  -
  -=item * 
  -
  -If the authentication failed, re-display the login page
  -
  -=item * 
  -
  -If the authentication passed, set a cookie and redirect to the same
  -page, and display
  -
  -=back
  -
  -=head2 Example Situation
  -
  -Let's say that we are writing a handler for the location I</dealers>
  -which is a protected area to be accessed only by people who can pass a
  -username / password authentication check.
  -
  -We will use C<Apache::Cookie> here as it runs pretty fast under
  -mod_perl, but C<CGI::Cookie> has pretty much the same syntax, so you
  -can use that if you prefer.
  -
  -For the purposes of this example, we'll assume that we already have
  -any passed parameters in a I<%params> hash, the C<authenticate()>
  -routine returns B<true> or B<false>, I<display_login()> shows the
  -username and password prompt, and I<display_main_page()> displays the
  -protected content.
  -
  -=head3 Code
  -
  -  if( $params{user} and $params{pass} ) {
  -      if(!authenticate(%params)) {
  -
  -Authentication failed, send them back to the login page.  B<NOTE:>
  -It's a good idea to use C<no_cache()> to make sure that the client
  -browser doesn't cache the login page.
  -
  -          $r->content_type('text/html');
  -          $r->no_cache(1);
  -          $r->send_http_header;
  -          display_login();
  -      } else {
  -
  -The user is authenticated, create the cookie with C<Apache::Cookie>
  -
  -          my $c = Apache::Cookie->new( $r,
  -              -name => 'secret',
  -              -value => 'foo'
  -              -expires => '+3d',
  -              -path => '/dealers'
  -          );
  -
  -B<NOTE:> when setting the 'expires' tag you must set 
  -it with I<either> a leading B<+> or B<->, as if either
  -of these is missing, it will be put literally into the 
  -cookie header.
  -
  -Now send them on their way via the authenticated page
  -
  -          $r->content_type('text/html');
  -          $c->bake;
  -          $r->header_out("Refresh"=>"0;url=/dealers");
  -          $r->no_cache(1);
  -          $r->send_http_header;
  -          $r->print( "Authenticated... heading to main page! );
  -
  -The above code will set the headers to refresh (this is the same
  -syntax as for the HTML meta tag) after 0 seconds.  The page that is
  -flashed on the screen will have the text in the C<$r-E<gt>print>
  -
  -      }
  -  } 
  -  elsif( $cookies{secret} ) {
  -
  -If they already have a secret cookie, display the main (protected) page.  Don't 
  -forget to check the validity of cookie data!
  -
  -      display_main_page();
  -  }
  -
   
   =head1 Apache::RequestNotes - Allow Easy, Consistent Access to Cookie and Form Data Across Each Request Phase
   
  @@ -887,10 +774,6 @@
   =item *
   
   Stas Bekman E<lt>stas (at) stason.orgE<gt>
  -
  -=item *
  -
  -Alan Bailward, E<lt>alan (at) ufies.orgE<gt>
   
   =back
   
  
  
  
  1.12      +120 -0    modperl-docs/src/docs/1.0/guide/snippets.pod
  
  Index: snippets.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/snippets.pod,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- snippets.pod	31 Jul 2002 14:44:19 -0000	1.11
  +++ snippets.pod	8 Nov 2002 06:34:47 -0000	1.12
  @@ -602,6 +602,121 @@
     $r->send_http_header;
     return OK;
   
  +=head1 Apache::Cookie example: Login Pages by Setting Cookies and Refreshing
  +
  +On occassion you will need to set a cookie and then redirect the user
  +to another page.  This is probably most common when you want a
  +Location to be password protected, and if the user is unauthenticated,
  +display to them a login page, otherwise display another page, but both
  +at the same URL.
  +
  +=head2 Logic
  +
  +The logic goes something like this: 
  +
  +=over 4
  +
  +=item * 
  +
  +Check for login cookie
  +
  +=item * 
  +
  +If found, display the page
  +
  +=item * 
  +
  +If not found, display a login page
  +
  +=item * 
  +
  +Get username/password from a POST
  +
  +=item * 
  +
  +Authenticate username/password
  +
  +=item * 
  +
  +If the authentication failed, re-display the login page
  +
  +=item * 
  +
  +If the authentication passed, set a cookie and redirect to the same
  +page, and display
  +
  +=back
  +
  +=head2 Example Situation
  +
  +Let's say that we are writing a handler for the location I</dealers>
  +which is a protected area to be accessed only by people who can pass a
  +username / password authentication check.
  +
  +We will use C<Apache::Cookie> here as it runs pretty fast under
  +mod_perl, but C<CGI::Cookie> has pretty much the same syntax, so you
  +can use that if you prefer.
  +
  +For the purposes of this example, we'll assume that we already have
  +any passed parameters in a I<%params> hash, the C<authenticate()>
  +routine returns B<true> or B<false>, I<display_login()> shows the
  +username and password prompt, and I<display_main_page()> displays the
  +protected content.
  +
  +=head3 Code
  +
  +  if( $params{user} and $params{pass} ) {
  +      if(!authenticate(%params)) {
  +
  +Authentication failed, send them back to the login page.  B<NOTE:>
  +It's a good idea to use C<no_cache()> to make sure that the client
  +browser doesn't cache the login page.
  +
  +          $r->content_type('text/html');
  +          $r->no_cache(1);
  +          $r->send_http_header;
  +          display_login();
  +      } else {
  +
  +The user is authenticated, create the cookie with C<Apache::Cookie>
  +
  +          my $c = Apache::Cookie->new( $r,
  +              -name => 'secret',
  +              -value => 'foo'
  +              -expires => '+3d',
  +              -path => '/dealers'
  +          );
  +
  +B<NOTE:> when setting the 'expires' tag you must set 
  +it with I<either> a leading B<+> or B<->, as if either
  +of these is missing, it will be put literally into the 
  +cookie header.
  +
  +Now send them on their way via the authenticated page
  +
  +          $r->content_type('text/html');
  +          $c->bake;
  +          $r->header_out("Refresh"=>"0;url=/dealers");
  +          $r->no_cache(1);
  +          $r->send_http_header;
  +          $r->print( "Authenticated... heading to main page! );
  +
  +The above code will set the headers to refresh (this is the same
  +syntax as for the HTML meta tag) after 0 seconds.  The page that is
  +flashed on the screen will have the text in the C<$r-E<gt>print>
  +
  +      }
  +  } 
  +  elsif( $cookies{secret} ) {
  +
  +If they already have a secret cookie, display the main (protected) page.  Don't 
  +forget to check the validity of cookie data!
  +
  +      display_main_page();
  +  }
  +
  +
  +
   =head1 Passing and Preserving Custom Data Structures Between Handlers
   
   Let's say that you wrote a few handlers to process a request, and they
  @@ -1422,6 +1537,11 @@
   =item *
   
   Stas Bekman E<lt>stas (at) stason.orgE<gt>
  +
  +=item *
  +
  +Alan Bailward, E<lt>alan (at) ufies.orgE<gt>
  +
   
   =back
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org