2010-09-22 4 views
0

Nouveau sur MVC, a beaucoup travaillé avec asp.net, mais n'a jamais utilisé l'appartenance, l'authentification, l'autorisation préalable avant.asp.net mvc session et l'authentification de l'adhésion

J'ai 2 questions:

  1. Dans les jours asp.net je stockerait l'utilisateur connecté dans les détails de l'utilisateur (nom d'utilisateur, premier & nom, email) dans une session (en utilisant une classe personnalisée) et juste vérifié que la session ["UserDetails"]! = null dans chaque page sécurisée, puis-je encore faire cela dans MVC? (pourquoi je ne le fais pas avec les choses intégrées? - déplacer la question # 2)

  2. Dans ma DB j'ai une table Authors (avec l'utilisateur & pass) qui est connectée à 20 autres tables andi ' Nous avons une table d'utilisateurs (avec l'utilisateur & pass) qui se connecte à 1 ou 2 tables. Dites que je veux utiliser le matériel intégré comment puis-je utiliser pour valider le login de l'auteur et la connexion des utilisateurs avec le même fournisseur d'adhésion? et comment vais-je savoir qui est actuellement connecté dans l'utilisateur ou l'auteur lors de l'appel User.Identity.IsAuthenticated?

Merci à tous!

Répondre

0

Question 1:

Dans vos contrôleurs vous serait utilise HttpContext.User pour obtenir le IPrincipal courant pour l'utilisateur qui fait la demande. Pour sécuriser une action (ou un contrôleur entier) il suffit de la décorer avec l'attribut [Authorize]. Lisez à propos de l'attribut authorize ici http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

Question 2:

Ici vous avez deux options, étendre le fournisseur de profils pour gérer ces données supplémentaires ou en vrac un peu d'intégrité référentielle et il suffit d'utiliser les services d'applications db d'autorisation et Conservez et ayez un champ UserId dans chaque entité liée à un utilisateur et créez votre collection d'utilisateurs et d'entités associées dans votre couche d'accès aux données. J'utilise toujours le 2ème.

+0

Salut, merci, mais pouvez-vous élaborer plus sur l'option 2 "perdre un peu d'intégrité référentielle et juste utiliser les services de l'application db" – TomerMiz

+0

Bien sûr, idéalement, vous auriez un seul DB, vous pouvez avoir tous relations nécessaires avec la table des utilisateurs. Aller avec la 2ème approche signifierait qu'il y aura 2 bases de données, une pour les utilisateurs et une pour les données de l'application, donc il n'y aura pas de relations dans le schéma entre les utilisateurs et leurs entités apparentées. – JoseMarmolejos

+0

Salut, donc avec la 2ème approche, je vais devoir tenir le type d'utilisateur (customr, auteur ..) dans la DB des utilisateurs? mais pourquoi 2 bases de données? Je pourrais juste avoir des tables d'utilisateurs et des clefs étrangères des utilisateurs aux tables de client et d'auteur. tu ne penses pas? – TomerMiz

0
  1. vous n'étiez pas censé le faire dans asp.net. Ce que vous étiez censé utiliser était l'authentification par formulaires pour émettre un ticket signé, ce qui, dans 2.0+, aurait pu être avec le fournisseur d'adhésion. Le plus tôt est assez flexible, donc avant de lire # 2 il n'y avait déjà aucune raison de ne pas l'utiliser;). Mais oui, vous pouvez toujours faire cela, et non il n'y a pas d'autre moyen suggéré de le gérer dans asp.net MVC.
  2. Vous pouvez soit mettre les données supplémentaires dans le ticket ou utiliser une convention en ajoutant quelque chose au nom d'utilisateur dans le ticket, puis lors de la réception d'un cookie, vous pouvez remplacer l'IPrincipal du contexte par un principal personnalisé.
+0

Salut, Merci, vous voulez dire enregistrer le nom d'utilisateur dans un cookie comme "autor_RealUserName" juste pour l'identifier en tant qu'auteur? – TomerMiz

+0

oui, mais je veux dire spécifiquement dans le cookie d'authentification par formulaires, pas un cookie personnalisé que vous créez. Plus d'informations sur l'authentification par formulaire dans ce lien: http://msdn.microsoft.com/en-us/library/ff647070.aspx. – eglasius