[Catalyst] Re: error when using Authentication::Store::Minimal
Tommy Butler
ace at tommybutler.me
Tue Jun 2 22:51:39 GMT 2009
I found my own answer by looking at the source code for the MVC plugin.
So much for the book.
The login method expects two strings: a username and a password. Kudos
to the author who also made the method able to detect a username and
password based on best-guess, common sense logic of what they MIGHT be
based on the $c->request form parameter input. Sadly, this was still no
match for the misinformation I was up against. The login method doesn't
want a hashref at all, as we observe here in the source:
http://cpansearch.perl.org/src/JROBINSON/Catalyst-Plugin-Authentication-0.10007_01/lib/Catalyst/Authentication/Credential/Password.pm
Tommy Butler wrote:
> Could anyone provide some insight on why this might be failing? I'm
> trying to use Authentication::Store::Minimal just to test
> authentication, following along with the examples in the Catalyst book
> by Jon Rockway.
>
> $c->login continues to fail. Instead I get this error from the debug
> server: [debug] User 'HASH(0x2460d20)' doesn't exist in the default
> store.
>
> My login controller's relevant code is thus:
>
> \\\\\\\\\\\ start code >
>
> sub index : Private {
> my ( $self, $c ) = @_;
>
> my $username = $c->request->param('username') || '';
> my $password = $c->request->param('password') || '';
>
> if ($username && $password) {
> # attempt to log user in
> if ($c->login({
> username => $username,
> password => $password,
> })) {
> $c->response->redirect($c->uri_for('/portal'));
> return
> }
> else {
> # set an error message
> $c->stash->{error} = 'Bad username or password';
> }
> }
>
> # if either of the above don't work out, send back to login page
> $c->stash->{message} .= 'Welcome, User. Please Log In.';
> $c->stash->{username} = $c->request->param('username');
> $c->stash->{template} = 'login.tt';
> }
>
> /////////// < end code
>
> I am expecting that my login would succeed, but this is not the case.
> Bear in mind that Sessions appear to be working perfectly.
>
> Any insights? The relevant parts of my primary application file is as
> shown below:
>
> \\\\\\\\\\\ start code >
>
> use Catalyst qw/
> -Debug
> ConfigLoader
> Static::Simple
>
> StackTrace
>
> Session
> Session::State::Cookie
> Session::Store::DBIC
>
> Authentication
> Authentication::Store::Minimal
> Authentication::Credential::Password
> /;
>
> our $VERSION = '0.01';
>
> __PACKAGE__->config( name => 'ABCweb' );
>
> __PACKAGE__->config(
> session => {
> flash_to_stash => 1,
> dbic_class => 'DB::Sessions',
> },
> );
>
> __PACKAGE__->config->{authentication}{users} = {
> 'tommy' => {
> password => 'password'
> }
> };
>
> /////////// < end code
>
>
More information about the Catalyst
mailing list