Étant donné que IPriincipal possédait la propriété IIdentity, est-il bon d'implémenter les deux interfaces sur ma classe User?Est-il bon ou mauvais d'implémenter IPrincipal & IIdentity en même temps?
Répondre
Généralement, l'utilisateur et le contexte de sécurité dans lequel l'utilisateur interagit sont différents, et donc s'ils sont modélisés de manière générique, ils doivent être séparés comme le font les interfaces IPrincipal et IIdentity. (Vous pouvez imaginer des applications où le même utilisateur peut avoir des rôles différents pour interagir avec le système.)
Il y a des applications où ces deux concepts sont identiques, dans ce cas je pense que vous pouvez implémenter les deux interfaces en toute sécurité avec une seule classe . Cela est particulièrement vrai si vous n'exposez pas directement la classe d'implémentation à la logique d'application, uniquement via les interfaces IPrincial et IIdentity. Si vous gardez cette séparation, vous pouvez à tout moment refactoriser votre classe sans casser la logique de l'application.
Un autre aspect que vous devez garder à l'esprit: habituellement pour configurer le contexte de sécurité pour un utilisateur est plus coûteux que pour installer une identité (vous devez saisir les permissions, etc.). Cependant, dans certains cas, l'application fait simplement référence à un utilisateur, mais il n'est pas nécessaire d'avoir un contexte de sécurité correctement configuré. Dans ces cas, l'initialisation d'une instance de classe d'utilisateurs, qui sert à la fois d'identité et de principal, est probablement un problème de performance. (Bien sûr, vous pouvez résoudre cela avec d'autres techniques, pas seulement en divisant les classes.)
Et enfin, vous devriez également considérer, si vous voulez implémenter le IIdentity/IPrincipal avec votre propre classe d'utilisateurs ou juste remplissez une instance GenericPrincipal/GenericIdentity. Le fait le plus important ici est que les instances IPrincipal (et IIdentity) doivent être sérialisables, car elles peuvent aller vers d'autres AppDomains. La configuration d'une implémentation IPrincipal qui peut être facilement sérialisée et désérialisée dans AppDomains n'est pas facile et nécessite un soin particulier. Donc, sauf si vous avez besoin d'une vérification de rôle spéciale, je vous recommande d'utiliser GenericPrincipal/GenericIdentity. (voir plus ici: http://sontek.vox.com/library/post/re-iprincipal-iidentity-ihttpmodule-serializable.html)
- 1. Mock IIdentity et IPrincipal
- 2. IPrincipal personnalisé avec WindowsAuthentication
- 3. Moq custom IIdentity
- 4. PHP - Fonction à l'intérieur d'une fonction. Bon ou Mauvais?
- 5. Combinaison Java PHP pour le traitement multithread - bon ou mauvais?
- 6. Entity Framework: ObjectContext Singletonish - Bon, mauvais ou Overthinking?
- 7. WCF Auto-hébergement sur le client? Bon ou mauvais
- 8. Sauvegarder des données en utilisant ajax: envoyer du texte volumineux en querystring est bon ou mauvais?
- 9. Comment exécuter 2 copies ou plus de la même WebSolution en même temps?
- 10. plusieurs tables bien ou mauvais?
- 11. Fonction MKTime retournant un mauvais temps?
- 12. Deux publications asynchrones en même temps?
- 13. comptage et le regroupement en même temps
- 14. fond Position et centre en même temps
- 15. validation Javascript et l'affichage en même temps
- 16. Relations de base de données circulaires. Bon, mauvais, exceptions?
- 17. temps mysql et le temps php pas le même
- 18. Utilisation de chaînes avec XML "général" dans WS - bon ou mauvais?
- 19. beaucoup d'enregistrements: créer des objets de gestion 1 par 1 ou tous en même temps?
- 20. MySQL affichant le mauvais temps pour certains fuseaux horaires
- 21. Insérer et mettre à jour en même temps
- 22. Programmation shell: Exécuter deux applications en même temps
- 23. Comment utiliser apache mod_rewrite et alias en même temps?
- 24. Deux modèles Rails associés doivent être créés en même temps
- 25. Combien de connexion au serveur mySQL en même temps?
- 26. Début + Fin donné - combien de "transactions" en même temps
- 27. Pourquoi avoir DHCP et adresse IP statique en même temps?
- 28. Comment basculer les onglets et pushViewController en même temps?
- 29. Animer deux divs en même temps, jquery help
- 30. Comment envoyer à View `$ data` et` $ data2_cat2` en même temps?