Question

Construire une nouvelle plate-forme Web mobile pour les utilisateurs mobiles pour acheter et télécharger du contenu sur leurs combinés. Dans le passé, nous avons utilisé un mécanisme de connexion entièrement sur mesure, mais je suis enquête sur l'aide d'un fournisseur d'adhésion personnalisée pour la prochaine version de la plate-forme.

La chose est, nous avons quelques peu bizarres « login » exigences de mécanisme, donc je ne suis pas sûr à 100% que MembershipProvider est le meilleur ajustement.

Il suffit de regarder pour une alimentation générale en arrière sur les exigences ci-dessous avec un « Oui, fournisseur d'appartenances est un bon ajustement » ou « Non, vous cognant une cheville carrée dans un trou rond »

Exigences

  1. L'utilisateur peut être nécessaire pour se connecter avec un « numéro de mobile » (nom d'utilisateur) et « Pin » (mot de passe) Cela correspond assez bien, comme ils l'ont déjà signé et confirmé par un SMS et il satisfait à la mise en œuvre de la méthode de ValidateUser(string username, string password)

  2. L'utilisateur peut être nécessaire de se connecter avec seulement un « numéro de mobile ». Dans ce cas, nous ne vous embêtez pas faire la vérification de l'identité de notre côté. Il réduit le nombre d'étapes pour l'utilisateur et la vérification est effectuée par l'opérateur particulier lorsque l'on tente de les facturer. (Les opérateurs peuvent vérifier que le numéro de téléphone mobile est entré, correspond avec le combiné quand il frappe le site de paiement de l'opérateur) ... alors même si les utilisateurs ont un mot de passe, nous aurions besoin de bluffer le fournisseur d'appartenance à someway, et les laisser dans avec un mot de passe vide.

  3. L'utilisateur n'a pas besoin de se connecter à tous. Dans ce cas, nous pouvons en toute transparence rebondir l'utilisateur vers une page Web spéciale d'opérateur de réseau, et nous allons obtenir le numéro de téléphone portable en-têtes quand ils rebondissent de façon transparente à nous. Dans ce cas, nous aurions besoin de prendre ce nombre par programme des en-têtes, effectuer la connexion en leur nom dans le code derrière (à nouveau sans broche / mot de passe) et serait magiquement automatiquement connecté l'utilisateur.

Exigence 2 et 3 sont peu bizarre. Nous avons essentiellement 3 différents mécanismes de connexion que l'un fournisseur d'appartenances aurait besoin pour satisfaire.

  • L'utilisateur Entrée mobile et l'utilisateur Entrée Pin
  • L'utilisateur Entrée mobile uniquement (code derrière je suppose que pour satisfaire à l'exigence de broches)
  • Complètement transparent Connexion (code derrière pour faire tout le processus de connexion)

Quelqu'un at-il des commentaires / feed-back sur ce qui précède ou qui ont des conseils sur une mise en œuvre du fournisseur d'appartenances bizarre que vous avez fait dans le passé.

Était-ce utile?

La solution

Je pense que cela pourrait fonctionner. Nous faisons # 3 sur un de nos sites. Voici un morceau de code que nous utilisons pour prendre soin d'elle. Pour utiliser cela, créez une page de connexion (transparentlogin.aspx ou quelque chose de similaire), assurez-vous que le fichier web.config permet l'accès anonyme à cette page et le code mis comme ça dans la fonction page_load pour la page transparentlogin.aspx:

const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";

if (MobileNumberFoundInHeader())
{
  string username = GetMobileNumberFromHeaders();
  // Authenticate the user behind the scenes
  System.Web.Security.FormsAuthentication.SetAuthCookie(username, false);
  System.Web.Security.FormsAuthentication.Authenticate(username, specialpassword);
}
else
{
  throw new Exception ("Mobile Number Missing");
}

Ensuite, dans la fonction ValidateUser dans le MembershipProvider, assurez-vous de faire un chèque comme ceci:

public override bool ValidateUser(string username, string password)
{
 const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";

 bool ValidationSuccess = false;

 // If the password being passed in is the right secret key (same  
 // for all users), then we will say that the password matches the
 // username, thus allowing the user to login 
 if (password == specialpassword)
 {
   ValidationSuccess = true;
 }

 if (DoStandardUsernamePasswordVerification() == true)
 {
   ValidationSuccess = true;
 }

 return ValidationSuccess;
}

En ce qui concerne exigence n ° 2, je suis un peu confus. Qu'est-ce exactement un opérateur? Je pensais que nous avions affaire à un téléphone mobile en utilisant un navigateur Web pour accéder à un site Web. Où se situe l'opérateur dans ce? Si la solution que je propose ci-dessus ne fonctionne pas, s'il vous plaît poster une réponse avec plus de détails sur l'opérateur.

Tim

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top