2008-12-01 7 views
1

Je dois obtenir une connexion à la base de données via un pare-feu et limiter les requêtes pouvant être exécutées. DBD :: Proxy semble être la solution parfaite pour cela. Cependant, j'utilise actuellement DBIx :: Class et je n'arrive pas à comprendre comment les relier.Comment puis-je utiliser DBD :: Proxy avec DBIx :: Class?

En particulier, DBD :: Proxy ne prend pas SQL; il prend des requêtes particulières. Mais DBIx :: Class ne semble pas avoir le moyen d'invoquer ces requêtes nommées.

Ceci est à l'intérieur d'une application Web basée sur Catalyst.

Répondre

1

DBD :: Proxy prend SQL. Il permet des requêtes nommées pour plus de commodité. Il n'y a pas moyen d'utiliser DBIx :: Class avec des requêtes nommées DBD :: Proxy, puisque le but du DBIx :: Class Object-Relational Mapper (ORM) est de présenter une vue orientée objet des données de SQL Instructions de langage de manipulation (DML). La fonction de requête nommée de DBD :: Proxy n'est pas une instruction DML, donc DBIx :: Class n'a pas de fonctionnalité qui correspond à vos besoins: passer directement une chaîne littérale à la fonction prepare() de votre pilote DBD :: Proxy.

Voici quelques façons peu commodes:

  1. Ne pas utiliser la DBIx :: classe. Il suffit de le faire dans DBI. Vous pouvez utiliser Catalyst :: Model :: DBI, ou DBI + catalyst :: Model :: Adapter + votre propre classe de modèle.

  2. N'utilisez pas les requêtes nommées. Cela signifie que si vous envisagiez d'utiliser des requêtes nommées pour contrôler l'accès à la base de données, vous devez déplacer la logique d'autorisation de requête dans le code qui appelle la base de données à l'intérieur de votre contrôleur ou modèle, selon sur la façon dont vous avez construit votre application.

+0

Cela confirme à peu près ce à quoi je m'attendais. Je ne peux malheureusement pas simplement déplacer le contrôle d'accès à l'application, car le but est de protéger la base de données contre la compromission des serveurs Web accessibles sur Internet. – derobert

Questions connexes