2010-07-19 1 views
2

Je dois enregistrer chaque action utilisateur effectuée sur une base de données en utilisant le nom d'utilisateur de la personne connectée à mon application ASP.net en tant qu'identifiant dans le journal.Suivi des actions utilisateur dans une application d'accès aux données ASP.net

Quelle est la manière la plus simple de le faire? Je suppose que pour chaque appel de méthode à ma couche d'accès aux données, je dois enregistrer les paramètres de cet appel et le nom d'utilisateur, puis appeler une nouvelle méthode "événement de journal" qui écrit les détails de l'appel dans une table.

Suis-je sur la bonne voie?

Répondre

0

Eh bien, ici, je travaille sur la base de données. Chaque fois qu'un utilisateur fait une opération d'insertion, de mise à jour, de suppression, un déclencheur est déclenché et l'opération avec les champs correspondants est enregistrée, pour l'historique et l'audit. Probablement pas le meilleur moyen mais ça marche.

+0

J'ai fait la même chose pour des colonnes spécifiques d'une table. Vous pouvez lire un peu sur les déclencheurs. Voici deux liens que vous pouvez utiliser pour lire un peu à leur sujet http://www.sqlteam.com/article/an-introduction-to-triggers-part-i http://www.go4expert.com/forums /showthread.php?t=15510 –

+0

Je suis d'accord avec Flaktron: si vous voulez uniquement vous connecter à des interactions de base de données, l'utilisation de déclencheurs SQL est votre moyen le plus fiable de vérification. Imho: o) –

+0

Cela ne fonctionne que si 1) chaque utilisateur est connecté à la base de données avec son propre nom d'utilisateur, ou 2) chaque insertion, mise à jour ou suppression inclut un nom d'utilisateur dans l'instruction sql. Dans le cas d'une application Web, où la base de données est accessible via un compte d'utilisateur de base de données unique pour tous les comptes d'utilisateurs d'applications Web, les déclencheurs peuvent ne pas être le choix le plus facile. – Thorin

1

Il existe trois choix évidents: utiliser des déclencheurs, utiliser SQL pour vous connecter à votre liste de distribution de données ou utiliser log4net pour vous connecter à votre liste de distribution de données.

Utilisation de triggers

Si vous utilisez des déclencheurs, ajoutez une colonne LastUser à chaque table et faire ladite colonne requise (ie NOT NULL avec une contrainte de vérification que ce n'est pas une chaîne vide). Vous aurez besoin de la colonne LastUser disponible pour le code dans vos déclencheurs afin que vous puissiez enregistrer qui a fait quoi. Vous ne dites pas quel système de base de données vous utilisez; certains ne prennent pas en charge les déclencheurs ou ne prennent pas en charge les déclencheurs SELECT (avez-vous besoin d'enregistrer les instructions SELECT en cours d'exécution?).

Connexion de DAL En utilisant SQL

Si vous vous connectez de votre DAL dans la base de données, nous l'espérons tous vos appels passent par une pièce centrale de code. Si c'est le cas, vous pouvez ajouter votre méthode de journalisation unique dans cette section de code. Rappelez-vous que vous voulez emballer tous les appels à la base de données dans une transaction pour vous assurer que votre journal et les données réelles ne sont pas désynchronisées.

Connexion de DAL L'utilisation Log4Net

Vous pourriez aussi facilement mettre en place log4net pour enregistrer tous les accès aux données. Log4net a la capacité d'enregistrer des entrées de journal dans des fichiers journaux, mais aussi dans des bases de données. L'ajout de log4net au code existant est facile, et la configuration est relativement facile.

Questions connexes