Non N'utilisez pas Session pour l'authentification. C'est moins sécurisé et instable (les sessions peuvent être détruites à volonté par le serveur).
Dans MVC, vous n'avez pas du tout besoin d'utiliser l'appartenance, mais ... et je vais mettre un point d'honneur à souligner le ... Faire l'authentification correctement n'est pas une tâche triviale. C'est très très très facile de se tromper et même pas le réaliser. Même si tu sais ce que tu fais. C'est quelque chose qui devrait être fortement analysé, testé, vérifié et ré-analysé.
Je suggérerais, si vous ne voulez pas étendre cet effort, vous devriez probablement juste utiliser les fournisseurs par défaut (il y en a plusieurs que vous pouvez choisir).
Mais dans tous les cas, si vous êtes déterminé à le faire vous-même, tout ce dont vous avez besoin est de vérifier l'utilisateur. MVC ne s'intègre pas avec le fournisseur d'appartenance comme le fait WebForms. Il l'utilise pour plus de commodité. Si vous regardez dans le AccountController
par défaut qui est généré pour vous si vous créez un projet Internet, tout ce qu'il fait est appelez Membership.VerifyUser()
.
L'élément le plus important est le système de cookie d'authentification, que MS fournit sous la forme de la classe FormsAuthentication
. Je recommande fortement d'utiliser ceci pour la gestion des cookies, à moins que vous sachiez vraiment VRAIMENT vraiment ce que vous faites.
Il suffit de regarder dans le AccountController
, et il devrait être très évident comment cela fonctionne. FormsAuthentication
est la partie qui s'intègre dans l'application et dit à asp.net que l'utilisateur a déjà été authentifié. Il utilise un cookie sécurisé et crypté, et il est bien conçu (il vous permet même de stocker vos propres données supplémentaires dans un format crypté).
L'authentification par formulaires est un ensemble de classes qui fonctionnent ensemble pour fournir un mécanisme d'authentification transparent et qui est intégré dans les formulaires Web MVC et Asp.net. Il s'agit essentiellement d'une implémentation du système IPrincipal et IIdentity, qui fait partie intégrante de asp.net (si vous tapez User.IsAuthenticated
cela utilise l'interface IPrincipal).
Ma vraie question ici est de savoir comment transmettre les informations d'utilisateur au contrôleur une fois authentifié? Je pense que mes options de mise en œuvre d'authentification seraient restreintes une fois que je trouverais cette question. –
@ O.O. - La réponse est que vous ne le faites pas. Si vous utilisez FormsAuthentication, l'authentification est effectuée pour vous. Si vous utilisez la propriété sur le Controller 'User' comme dans' User.Identity.Name' vous obtenez le nom d'utilisateur avec lequel vous êtes connecté, puis vous recherchez les autres informations dont vous avez besoin dans votre base de données. –
@ O.O. - er .. Je veux dire que si vous utilisez 'FormsAuthentication' alors la gestion des cookies d'authentification est faite pour vous, ce qui inclut également la validation du cookie sur les pages suivantes et le remplissage de la variable globale' HttpContext.Current.User' (qui sera ensuite propagée au contrôleur et à la vue). –