NAME
Catalyst::Plugin::Authentication::Credential::Password - Authenticate a user with a password.
SYNOPSIS
use Catalyst qw/
Authentication
Authentication::Store::Foo
Authentication::Credential::Password
/;
sub login : Local {
my ( $self, $c ) = @_;
$c->login( $c->req->param('username'), $c->req->param('password') );
}
DESCRIPTION
This authentication credential checker takes a username (or userid) and a password, and tries various methods of comparing a password based on what the chosen store's user objects support:
- clear text password
-
If the user has clear a clear text password it will be compared directly.
- crypted password
-
If UNIX crypt hashed passwords are supported, they will be compared using perl's builtin
cryptfunction. - hashed password
-
If the user object supports hashed passwords, they will be used in conjunction with Digest.
METHODS
- login $username, $password
-
Try to log a user in.
$usernamecan be a string (e.g. retrieved from a form) or an object. If the object is a Catalyst::Plugin::Authentication::User it will be used as is. Otherwise$c->get_useris used to retrieve it.$passwordis a string.If
$usernameor$passwordare not provided, the query parameterslogin,user,usernameandpassword,passwd,passwill be tried instead.
RELATED USAGE
After the user is logged in, the user object for the current logged in user can be retrieved from the context using the $c->user method.
The current user can be logged out again by calling the $c->logout method.
SUPPORTING THIS PLUGIN
For a User class to support credential verification using this plugin, it needs to indicate what sort of password a given user supports by implementing the supported_features method in one or many of the following ways:
Clear Text Passwords
Predicate:
$user->supported_features(qw/password clear/);
Expected methods:
- password
-
Returns the user's clear text password as a string to be compared with
eq.
Crypted Passwords
Predicate:
$user->supported_features(qw/password crypted/);
Expected methods:
- crypted_password
-
Return's the user's crypted password as a string, with the salt as the first two chars.
Hashed Passwords
Predicate:
$user->supported_features(qw/password hashed/);
Expected methods:
- hashed_password
-
Return's the hash of the user's password as binary.
- hash_algorithm
-
Returns a string suitable for feeding into "new" in Digest.
- password_pre_salt
- password_post_salt
-
Returns a string to be hashed before/after the user's password. Typically only a pre-salt is used.
Crypt::SaltedHash Passwords
Predicate:
$user->supported_features(qw/password salted_hash/);
Expected methods:
- hashed_password
-
Returns the hash of the user's password as returned from Crypt-SaltedHash->generate.
Optional methods:
- password_salt_len
-
Returns the length of salt used to generate the salted hash.