J'aimerais conserver un journal de chaque page de page pour tous les utilisateurs de mon application Web. Après avoir passé suffisamment de temps, j'utiliserai ensuite ce journal pour générer des rapports. Je voudrais que le mécanisme de journalisation soit un peu flexible car je n'aurais pas besoin de connecter toutes les demandes HTTP. p>
Un exemple d'utilisation est: une entreprise s'inscrit pour mon application Web et permet à 5 employés d'utiliser l'application. J'aimerais signaler que 3 employés ont utilisé la demande la semaine dernière. Ou montrer que 4 employés l'ont utilisé entre juin et août de l'année en cours. p>
J'utilise ASP.NET MVC avec SQL Server, si cela fait une différence. P>
est-il aussi simple que cela? Créez une table SQL avec les colonnes suivantes: userid, nom de commande, actionName, actionparamètres, créatedon. Ensuite, créez un actefilterattribute qui ajoute un enregistrement à la DB pour chaque action invoquée. P>
Y a-t-il des pièges que je devrais m'inquiéter (autre qu'une taille de table potentiellement grande)? P>
3 Réponses :
Certains des pièges: P>
Je suppose que vous pourriez implémenter cela dans un type d'autorisateur personnalisé, de sorte que vous ne le codez pas sur chaque contrôleur, mais il sera à la lettre de chaque demande qui serait éventuellement plus que ce dont vous avez réellement besoin. P>
Avez-vous envisagé d'utiliser un type d'utilitaire d'analyse de journal IIS? Il aurait beaucoup d'informations dont vous avez déjà besoin. P>
Regardez l'interface IacctionFilter - vous pouvez écrire votre propre classe qui implémente cela et enregistrer tout ce que vous devez. P>
Une autre option si vous êtes prêt à utiliser JavaScript, vous pouvez mettre en œuvre quelque chose dans le sens de SiteCatalyste. Vous envoyez une demande en utilisant JavaScript à partir du client à la page Load à une action du contrôleur avec les informations appropriées de l'URL. Par exemple: p>
www.example.com \ AnalyticsController \ Action \ CurrentController \ Courant \ Nom d'utilisateur P>
L'avantage est que votre journalisation n'est pas exécutée en séquence avec toutes vos autres opérations et que vous pouvez probablement le faire fonctionner en mettant l'appel Ajax dans la page maître. P>
L'inconvénient est qu'il utilise JavaScript qui, comme indiqué, pourrait être désactivé. Il serait également vraiment facile de faire partie de la spoof. P>
Peut-être qu'une solution plus évolutive consiste à utiliser Google Analytics et à suivre "URL virtuelles" que je pouvais analyser. Comme / rapports / / / / . Après cela, utilisez leur API d'alimentation de données et analysez la réponse
Non sécurisé et les utilisateurs peuvent éteindre JS ou Block GA.