[Catalyst] Debugging Auth code

Dr. Jennifer Nussbaum bg271828 at yahoo.com
Sat Jul 5 21:38:15 BST 2008



--- On Sat, 7/5/08, J. Shirley <jshirley at gmail.com> wrote:
From: J. Shirley <jshirley at gmail.com>
Subject: Re: [Catalyst] Debugging Auth code
To: bg271828 at yahoo.com
Cc: "The elegant MVC web framework" <catalyst at lists.scsys.co.uk>
Date: Saturday, July 5, 2008, 10:35 AM

On Sat, Jul 5, 2008 at 9:25 AM, Dr. Jennifer Nussbaum
<bg271828 at yahoo.com> wrote:
>
> My password field is called "password", so i left it out of the
config,
> because the
> docs say that this is the default and therefore unnecessary.
>
> I thought that the id_field was the name of the id; i do have an id value,
> but of course the user just enters a name, not their database id.
>
> In any case I changed the config to:
>
>  __PACKAGE__->config->{'Plugin::Authentication'} = {
>      default_realm => 'dbic',
>      realms => {
>      dbic => {
>          credential => {
>          class => 'Password',
>          password_field => 'password',
>          password_type => 'clear'
>          },
>          store => {
>          class => 'DBIx::Class',
>          user_class => 'CiteEditorDB::User',
>          id_field => 'login'
>          }
>      }
>      }
>  };
>
> (Sorry about the indentation, its not cut-and-pasting well.)
>
> And i have the same result--"[debug] Unable to locate user matching
user
> info provided"
> in my log.
>
> Anything else i can try? Thank you!
>
> Jen
>
> --- On Sat, 7/5/08, J. Shirley <jshirley at gmail.com> wrote:
>
> From: J. Shirley <jshirley at gmail.com>
> Subject: Re: [Catalyst] Debugging Auth code
> To: bg271828 at yahoo.com, "The elegant MVC web framework"
> <catalyst at lists.scsys.co.uk>
> Date: Saturday, July 5, 2008, 9:05 AM
>
> On Sat, Jul 5, 2008 at 7:01 AM, Dr. Jennifer Nussbaum
> <bg271828 at yahoo.com> wrote:
>> Hi,
>>
>> Im trying to convert a legacy program over to Catalyst, and in the
process
>> have
>> tried to use the new Auth framework that i havent used before. Im
having
>> some
>> problems that i cant debug, though, even though it looks like im doing
>> things right.
>>
>> I got my setup from the docs and Tutorial. In my base class i use
>> Authentication,
>> Session Session::Store::DBIC, and Session::State::Cookie. My config
is:
>>
>>  __PACKAGE__->config->{'Plugin::Authentication'} = {
>>      default_realm => 'dbic',
>>      realms => {
>>      dbic => {
>>          credential =>
>  {
>>          class => 'Password',
>>          password_type => 'clear'
>>          },
>>          store => {
>>          class => 'DBIx::Class',
>>          user_class => 'MyDB::User'
>>          }
>>      }
>>      }
>>  };
>>
>> (By the way i dont really know what 'realms' does, as im not
using
> them now,
>> but
>> i thought that i can just use anything as long as im not using it
> directly.)
>>
>> Then my login routine includes:
>>
>>  my $username = $c->request->params->{username} ||
"";
>>   my $password = $c->request->params->{password} ||
"";
>>
>>   # If the username and password values were found in form
>>   if ($username && $password) {
>>       $c->log->debug("we have a username and pw");
>>       $c->log->debug("username is >$username<,
password
> is
>  >$password<");
>>     # Attempt to log the user in
>>     if ($c->authenticate({ login => $username,
>>                password => $password })) {
>> # ...
>>
>> (The name of my "username" field in the underlying table is
> "login" for
>> legacy
>> reasons. But i thought thta using "login => $username"
would
> address this;
>> login is the right column in the table itself.)
>>
>> When i run DBIC_TRACE, the SQL that's executed _does_ return the
user
> object
>> associated with this username and password combo. However, when i run
> this,
>> my log shows:
>>
>> [debug] Path is "login"
>> [debug] we have a username and pw
>> [debug] username is >testuser<, password is >passw0rd<
>> [debug] Unable to locate user matching user info provided
>>
>> Since the SQL is returning the right thing, and everything else looks
>  OK,
> i
>> cant
>> tell why this is failing. Can someone give me some advice on debugging
> this?
>>
>> Thanks!
>>
>>
>
> Hi Jennifer,
>
> Looks like you are missing the "password_field" config
parameter:
>
http://search.cpan.org/~jayk/Catalyst-Plugin-Authentication-0.10006/lib/Catalyst/Authentication/Credential/Password.pm#CONFIGURATION
>
> Also, you need to have the "id_field" set in your store
> configuration:
>
http://search.cpan.org/~jayk/Catalyst-Authentication-Store-DBIx-Class-0.104/lib/Catalyst/Authentication/Store/DBIx/Class.pm#CONFIGURATION
>
> That would be the name of your username field in your MyDB::User class.
>
>
> One thing to check is that you don't have any older versions of
> Catalyst::Plugin::Authentication::* laying around (especially
> Catalyst::Plugin::Authentication::Store::DBIx::Class or
> Catalyst::Plugin::Authentication::Credential::Password) - that may be
> causing some confusion internally.

The only version of C::P::A::C::P i have is the compatibility shim with
no real working lines. I dont have C::P::A::S::DBIx::Class at all.

Ive been trying to debug this, adding further debugging code, and still
cant figure out whats going on. I reach the "authenticate" line, and
DBIC_TRACE reports that the right DB query is being fired off, which if
i run it in the mysql command-line program does return the right info.
But "authenticate" doesnt authenticate it. There must be some reason why
its not finding the user, but i cant figure out what it is.

Any further debugging ideas? Ive been over this several times now, i just
cant see what im missing.

Thank you.



      



More information about the Catalyst mailing list