Comment dans code à fournir le mot de passe d'une chaîne de connexion dans un ADO.Net Modèle de Données d'Entité
J'ai suivi ce tutoriel sur la façon de créer un service OData.
http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx
Et il fonctionne parfaitement ... mais, dans l'Entité de Modèle de Données de l'Assistant, quand il vous demande de "Choisissez Votre Connexion de Données", il vous donne cet avertissement.
"De cette chaîne de connexion semble contenir des données sensibles (par exemple, un mot de passe) qui est nécessaire pour se connecter à la base de données. Le stockage de données sensibles dans la chaîne de connexion peut être un risque pour la sécurité. Voulez-vous d'inclure des données sensibles dans la chaîne de connexion?"
Si je choisis: "Non, exclure les données sensibles de la chaîne de connexion. Je vais le mettre dans mon code de l'application."
Je ne vois pas où je peux, dans mon code d'application", insérer le mot de passe. (Mon entreprise stocke crypté dans la base de registre)
En Plus, j'ai plusieurs DBs que j'ai besoin de connecter, en fonction de l'environnement (Dev, CA, ou Prod) et j'ai besoin de savoir ce que DB est référencé dans la chaîne de connexion pour obtenir le mot de passe correct.
Grâce.
- Comment en code.. , une belle formulation de la question : )
Vous devez vous connecter pour publier un commentaire.
Lorsque vous créez votre contexte, vous pouvez définir une chaîne de connexion. Pour construire cette chaîne de connexion, vous pouvez analyser la chaîne de connexion sans mot de passe avec un
EntityConnectionStringBuilder
et ensuite d'analyser l'intérieur de la chaîne de connexion avec un autreConnectionStringBuilder
, selon votre navigateur. Ensuite, vous pouvez définir le mot de passe et passer au constructeur.J'ai ajouté un "dummy" mot de passe dans le fichier de configuration ("XXXXX"), puis remplacé cette valeur avec le mot de passe réel dans l'entité constructeur
Modifier le constructeur de la entités
Mon exemple d'application a été écrite dans la Base de données "Premier" et le "CreateNewConnectionString" méthode ci-dessous fonctionne très bien (même si elle n'a pas l'air tout ce que élégant.)
La "CreateNewConnectionString2" la méthode a l'air vraiment élégant, MAIS provoque une exception à me dire qu'il est uniquement valide dans le Code de "Premier" mode.
Donc, je suis en fournissant à la fois des méthodes avec le constructeur que je l'ai modifié pour utiliser mes méthodes. REMARQUE ET ATTENTION, j'ai modifié le code généré par un modèle et qui est sujet à être écrasé si le code est régénéré. Pour moi, il semble que le bon endroit pour le mettre.
Si votre demande a été généré dans le Code de "Premier" mode, vous devrez peut-être utiliser "CreateNewConnectionString2" (je n'ai pas encore testé cette option.)
Je m'empresse d'admettre que j'ai copié les deux blocs de code à partir d'autres offres comme je ne connais pas encore assez à propos de tout cela pour écrire mon propre code.