2010-03-05 2 views
1

Quel est le moyen le plus efficace de faire fonctionner Catalyst::Plugin::Authentication si l'utilisateur uesrid est qualifié par un domaine (c'est-à-dire une clé composite)? Supporte-t-il cette fonctionnalité? Je cherche spécifiquement à utiliser Catalyst::Plugin::Authentication::DBI mais je ne suis pas opposé à forking, patcher, recréer si elle n'a pas la fonctionnalité actuelle.Comment utiliser les ID d'utilisateur de clé composite avec Catalyst :: Plugin :: Authentication :: DBI?

Je dois me connecter à un certain nom de domaine avec un certain mot de passe. Il semble que/all/les modules C:P:A dépendent d'une simple combinaison ID utilisateur/mot de passe. D'autres exemples, et des conseils sont les bienvenus.

Répondre

-2

La vraie réponse est Catalyst::Plugin::Authentication nécessite from_session et for_user-handle only serialized keys: for_user retourner la clé sérialisé, from_session retour à l'utilisateur. Cela crée un problème car C:P:A:DBI n'autorise pas actuellement les utilisateurs multi-clés dans son implémentation de rôle ou dans son implémentation from_session et for_user. Bizarrement, cela permet des conditionnalités complexes de valeurs-clés dans l'extraction de l'utilisateur dans find_user. Actuellement, l'inconvénient est une mauvaise hypothèse que tous les utilisateurs sont identifiés avec un uid/guid/pkid, etc.

Pour qu'un utilisateur soit identifié avec une clé composite, la requête-conditionnelle doit être attachée à l'utilisateur. stocker, ou mis en cache dans la clé sérialisée for_user. Les deux, d'entre eux sont réalisables avec un patch.

Assez bizarrement j'ai eu cette même confusion la dernière fois I created an LDAP store 3 years ago.

Je garderai cette question ouverte jusqu'à ce que je la corrige, la fourche, ou que quelqu'un donne des conseils utiles applicables à Catalyst::Plugin:: Authentication::Store::DBI. J'ai réécrit ce module et il est disponible à http://github.com/EvanCarroll/Catalyst-Authentication-Store-DBI

+1

Il n'y a pas une telle hypothèse dans Auth, il n'y a pas de module tel que Catalyst :: Plugin :: Authentication :: DBI, et si vous parlez de Catalyst :: Authentication :: Store :: DBI la réponse devrait être évidente. 'for_session' et' from_session' doivent simplement être inverses. – hobbs

+0

L'hypothèse est dans Store :: DBI concernant les utilisateurs étant uniques sur une seule colonne et les rôles étant récupérés avec cette seule colonne .. Bonne capture sur le nom du module typo. –

7
  1. Catalyst :: Authentification :: Boutique :: :: DBIx classe prend en charge la recherche d'un utilisateur sur une sorte de clé que vous aimez, comme toutes les informations auth vous fournissez (à l'exception de l'password_field désigné) est transformé en une requête DB, vous pouvez faire $c->authenticate({ last_name => "Fred", favorite_color => "Blue" }) si vous voulez.

  2. peu près tout ce que vous pouvez imaginer est possible que si vous écrivez un Realm ou un Store, et il n'y a aucune raison pour laquelle ils doivent être compliqué - seulement des classes qui mettent en œuvre une ou deux méthodes et héritant le reste. Lequel vous devrez utiliser dépend des détails de ce que votre application est en train de faire - le fait de surcharger find_user dans un domaine serait le plus simple; écrire un nouveau magasin serait un peu plus délicat.

Questions connexes