[cgiapp] Multiple Authentications?
Nicholas Bamber
nicholas at periapt.co.uk
Wed Jun 9 14:04:57 EDT 2010
Jerry,
The answer to your title question is yes - you can have multiple DBI
drivers. There is an example in the main documentation where there are
two Generic drivers and that should carry across.
However I don't think this will quite do what you want. First of all the
authentication module does not handle authorization (i.e. permissions).
So according to CAP::Authentication every user is either authenticated
or not
and every page is either protected or unprotected. Authorization should
govern access to specific objects which is a much more vague problem.
There is a CAP::Authorization module but I have never looked at it.
Secondly the code does not remember which driver finally authenticated
the user.
> Message: 1
> Date: Tue, 8 Jun 2010 11:50:40 -0700 (PDT)
> From: "Jerry Kaidor" <jerry at tr2.com>
> Subject: [cgiapp] Multiple Authentications?
> To: "CGI Application" <cgiapp at lists.openlib.org>
> Message-ID:
> <3544e006eabdd6392534177e71aff063.squirrel at www.jm-properties.com>
> Content-Type: text/plain;charset=iso-8859-1
>
> Hello,
>
> I see that CAPAuthentication will let you install multiple drivers.
> Can one install multiple instances of the same driver, only with
> different parameters?
>
> Here's my situation: My business has three locations - let's call them
> locA,locB,locC. The database for each location has a "users" table
> which contains usernames, MD5 passwords, and a constellation of
> permissions for each user.
>
> There is also a global "users" table. Its structure is exactly the same
> as the users tables for the individual locations. The permissions in
> this table apply to ALL the locations.
>
> So if user "Bob" appears in the global table and has permission "foo",
> then inq_can_foo( "Bob" ) returns TRUE for all the locations. If, OTOH,
> Bob appears in LocA, then inq_can_foo("Bob") will only return TRUE if
> we happen to be in locA's web page.
>
> I'm thinking that I could register four DBI drivers, one for each
> database. Then the system would just try each "users" table until it
> got a match. I don't think it would scale well, though. But it would
> get things going for now, and with all of the authentication stuff
> buried in one or two files, I could easily change it in the future.
>
> After authentication - for the duration of the session - I would have
> to remember which database the user authenticated against, because that
> effects the permissions.
>
> - Jerry Kaidor
>
> p.s. I have gotten my entire project under Subversion, generated a branch
> for this work, and had a great time yesterday removing all the "print"
> statements from my HTML-generating code. Svn's method of doing branches -
> just create a separate directory for each one - seems rather hokey - but
> as long as it can reliably do merges, I guess I don't care.
>
>
>
>
> ------------------------------
>
> _______________________________________________
> cgiapp mailing list
> cgiapp at lists.openlib.org
> http://lists.openlib.org/mailman/listinfo/cgiapp
>
>
> End of cgiapp Digest, Vol 33, Issue 8
> *************************************
>
More information about the cgiapp
mailing list