2008-12-17 8 views
1

Mon site mvc asp.net a besoin d'une autorisation, mais il est différent de la notion habituelle d'utilisateurs et donc d'appartenance. Il sera plus utilisé pour les préférences que pour l'authentification en réalité. Les comptes sans mot de passe doivent être possibles (et seront initialement le seul type) et un compte peut également être utilisé par plusieurs utilisateurs à la fois. Selon le groupe d'utilisateurs, par exemple, tous les utilisateurs d'une certaine région peuvent obtenir un compte partagé. Ceci est une décision de la part du client (division marketing) et n'est pas sujet à discussion. Une page de destination prend (seulement) un userId dans l'URL qui va charger un compte qui à son tour a des préférences liées à ce qui peut être utilisé dans le reste du site.
Si un utilisateur ne démarre pas sur la page de destination ou que l'ID de compte envoyé ne correspond pas à un enregistrement dans le système, il se voit attribuer le compte par défaut qui a les préférences par défaut.Devrais-je utiliser l'adhésion pour ce système de compte inhabituel

Je pensais ne pas réinventer la roue (quelqu'un devrait trouver une nouvelle expression pour cela) et utiliser le système d'adhésion asp.net. Mais tout le système est basé sur les mots de passe requis, les courriels et les sessions uniques par utilisateur, qui sont toutes des choses que je ne peux pas fournir. Parce que la situation est un peu peu conventionnelle, je pensais qu'un MembershipProvider personnalisé serait en place. Mais il semble que l'essentiel de ceci hérite des classes régulières d'adhésion. Les méthodes de ces classes exigent toutes des choses dont je n'ai pas besoin.

Toutes les suggestions

Répondre

1

Vous pouvez utiliser le standard fournisseur d'appartenances et en utilisant la méthode intégrée .Validate() envoyer le nom d'utilisateur et un mot de passe qui est « standard » pour tous les comptes sans authentification. Avoir 2 contrôles utilisateur 1 différents pour «Connexion validée avec mot de passe» et un pour «Partager un compte sans mot de passe», chacun utilise une connexion à l'adhésion, mais cette dernière doit avoir un bit défini sur le champ du membre qui dit « compte public = True/1 "

Bonne chance, semble comme un projet amusant, serait cool de voir le résultat;)

Par ailleurs, vous n'avez pas besoin de partager la session, ou vous pouvez , juste stocké la session dans la base de données et mapper la session à un utilisateur au lieu d'un cookie, pourrait fonctionner?


Comme demandé je vais élaborer sur les différents contrôles de l'utilisateur. Brièvement, j'aurais 2 contrôles, un peut-être appelé GlobalLogin et un appelé UserLogin, où GlobalLogin affiche un formulaire qui a seulement le nom d'utilisateur, lorsqu'il déclenche une fonction qui utilise, comme je l'ai déjà dit, une fonction qui appelle la méthode Validate le fournisseur d'adhésion, avec un mot de passe prédéfini. En tant que réflexion, voir tous les utilisateurs de la section "Non connecté avec mot de passe" comme anonymes et les traiter de la même manière, la seule différence étant qu'ils peuvent accéder à des zones spécifiques à l'utilisateur. Ce contrôle doit également vérifier qu'un certain champ dans la base de données est défini, comme un champ "Autorise un compte utilisé sans mot de passe", où dans ce cas, le bit/boolean doit être vrai pour que cette connexion soit acceptée.

Maintenant, à l'autre partie, le contrôle qui gère les comptes protégés par mot de passe, cela nécessite à la fois nom d'utilisateur & Mot de passe et cela appelle le Valider avec ces paramètres.Maintenant, n'oubliez pas que lorsque vous êtes connecté avec mot de passe, vous pouvez changer votre mot de passe, cela ne devrait pas être possible avec un compte global, car alors votre mot de passe global ne fonctionnerait pas :)

+0

Merci pour l'entrée. Pourriez-vous élaborer un peu sur votre deuxième paragraphe? Que voulez-vous dire avec 2 contrôles utilisateur différents? –

+0

Est-ce suffisant? :) –

+0

oui, merci. Je vais vérifier si cette option est viable avec mes exigences actuelles :) –

-1

Vous trouverez des informations détaillées sur le fournisseur d'abonnement au http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx. Fondamentalement, vous devez créer un nouveau fournisseur, ou dériver de l'existant, et surcharger la méthode ValidateUser pour toujours retourner vrai.

Questions connexes