X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F05_Authentication.pod;h=23f577d0f0e62482819bf5b97a8b53cde3135438;hp=dc6e2bdd0d7cd9532843321b851c34295277b56b;hb=1ab117d71933428aa0a9e9750b9f7ce2275ae382;hpb=3c700304aa69d7d4744523fa1f264a2e07c4315c diff --git a/lib/Catalyst/Manual/Tutorial/05_Authentication.pod b/lib/Catalyst/Manual/Tutorial/05_Authentication.pod index dc6e2bd..23f577d 100644 --- a/lib/Catalyst/Manual/Tutorial/05_Authentication.pod +++ b/lib/Catalyst/Manual/Tutorial/05_Authentication.pod @@ -223,11 +223,11 @@ C is new): -Debug ConfigLoader Static::Simple - + StackTrace - + Authentication - + Session Session::Store::FastMmap Session::State::Cookie @@ -330,29 +330,29 @@ for details. =head2 Add Login and Logout Controllers -Use the Catalyst create script to create two stub controller files: +Use the Catalyst create script to create a stub controller file: - $ script/myapp_create.pl controller Login - $ script/myapp_create.pl controller Logout + $ script/myapp_create.pl controller Authentication -You could easily use a single controller here. For example, you could -have a C controller with both C and C actions. +You could easily use multiple controller's here. For example, you could +have a C controller for both C and C actions. Remember, Catalyst is designed to be very flexible, and leaves such matters up to you, the designer and programmer. -Then open C, locate the +Then open C, locate the C method (or C if you are using an older version of Catalyst) that was automatically inserted by the helpers when we created the Login controller above, -and update the definition of C to match: +and remove the definition of C. Add the following sub: - =head2 index + =head2 login Login logic =cut - sub index :Path :Args(0) { + # global means the path to it will be /login not /authenticaton/login + sub login :Global :Args(0) { my ($self, $c) = @_; # Get the username and password from form @@ -367,24 +367,18 @@ and update the definition of C to match: # If successful, then let them use the application $c->response->redirect($c->uri_for( $c->controller('Books')->action_for('list'))); - return; + return 1; } else { - # Set an error message - $c->stash->{error_msg} = "Bad username or password."; + $c->stash(error_msg => "Bad username or password."); } } else { - # Set an error message - $c->stash->{error_msg} = "Empty username or password."; + $c->stash(error_msg => "Empty username or password."); } # If either of above don't work out, send to the login page - $c->stash->{template} = 'login.tt2'; + $c->stash(template => 'login.tt2'); } -Be sure to remove the -C<$c-Eresponse-Ebody('Matched MyApp::Controller::Login in Login.');> -line of the C. - This controller fetches the C and C values from the login form and attempts to authenticate the user. If successful, it redirects the user to the book list page. If the login fails, the user @@ -398,16 +392,11 @@ and partly for code clarity) only to use C in C, and then mainly to generate the 404 not found page for the application. -Instead, we are using "C" here to -specifically match the URL C. C actions (aka, "literal -actions") create URI matches relative to the namespace of the -controller where they are defined. Although C supports -arguments that allow relative and absolute paths to be defined, here -we use an empty C definition to match on just the name of the -controller itself. The method name, C, is arbitrary. We make -the match even more specific with the C<:Args(0)> action modifier -- -this forces the match on I C, not -C. +Instead, we are using "C" here to +specifically match the URL C. C actions create URI matches +relative to the web root. We make the match even more specific with the +C<:Args(0)> action modifier -- this forces the match on I C, +not C. Next, update the corresponding method in C to match: @@ -585,6 +574,7 @@ box instead of using NTP. Open C and add the following lines to the bottom (below the closing tag): + ...

Login Create @@ -649,8 +639,6 @@ the closing "1;": # with hex encoding; Generate the 'check_password" method __PACKAGE__->add_columns( 'password' => { - data_type => "TEXT", - size => undef, encode_column => 1, encode_class => 'Digest', encode_args => {salt_length => 10},