Domanda

Costruzione di una nuova piattaforma web mobile per utenti mobili per l'acquisto e il download di contenuti sui loro cellulari. In passato abbiamo usato un meccanismo di login completamente su misura ma sto indagando utilizzando un provider personalizzato iscrizione per la prossima versione della piattaforma.

Il fatto è, abbiamo alcuni requisiti meccanismo "d'accesso" un po 'strano, quindi non sono sicuro al 100% che una MembershipProvider è la soluzione migliore.

Solo in cerca di un po 'di mangime generale indietro sui requisiti di seguito con un "Sì, provider di appartenenza è una buona misura" o "No, si sta sbattendo un piolo quadrato in un buco rotondo"

Requisiti

  1. L'utente può essere richiesto di effettuare il login con un "numero di cellulare" (nome utente) e "Pin" (password) Questo si adatta abbastanza bene, come hanno già firmato e confermati con uno SMS e soddisfa il metodo di implementazione ValidateUser(string username, string password)

  2. L'utente può essere richiesto di effettuare il login con solo un "numero di cellulare". In questo caso, non si preoccupano di fare la verifica dell'identità dalla nostra parte. Si riduce il numero di passaggi per l'utente e verifica è effettuata dall'operatore particolare quando cerchiamo di fatturare loro. (Gli operatori possono verificare che il numero di cellulare inserito partite con il portatile quando si colpisce il sito di pagamento operator) ... quindi anche se gli utenti hanno una password, avremmo bisogno di bluffare il provider di appartenenze in qualche modo, e lasciarli in con una password vuota.

  3. L'utente non ha bisogno di accedere a tutti. In questo caso, siamo in grado di trasparenza rimbalzare l'utente a una pagina web speciale operatore di rete, e noi provvederemo a ottenere il numero di cellulare in intestazioni quando sono in modo trasparente rimbalzato di nuovo a noi. In questo caso, avremmo bisogno di prendere a livello di codice che il numero dalle intestazioni, eseguire il login per loro conto nel codice dietro (ancora una volta senza alcun pin / password) e l'utente sarebbe magicamente auto collegato.

Requisito 2 e 3 sono po 'strano. Abbiamo sostanzialmente 3 diversi meccanismi d'accesso che il fornitore di uno dei membri avrebbe bisogno di soddisfare.

  • Utente immessa Cellulari & User Inserito Pin
  • utente immesso solo per dispositivi mobili (codice dietro suppongo per soddisfare la richiesta del PIN)
  • Accesso completamente trasparente (codice dietro per fare l'intero processo di login)

Chiunque ha ottenuto tutte commenti / feed back sul sopra o ha qualche consiglio su qualsiasi implementazione provider di appartenenze bizzarra che hai fatto in passato.

È stato utile?

Soluzione

penso che potrebbe funzionare. Facciamo # 3 su uno dei nostri siti. Ecco un pezzo di codice che utilizziamo per prendersi cura di esso. Per usare questo, creare una pagina di login (transparentlogin.aspx o qualcosa di simile), assicurarsi che il file web.config consente l'accesso anonimo a questa pagina, e mettere il codice come questo nella funzione Page Load per la pagina 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");
}

Poi, nella funzione ValidateUser nel MembershipProvider, assicuratevi di fare un controllo in questo modo:

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;
}

Per quanto riguarda il requisito # 2, sono un po 'confuso. Che cosa è esattamente un operatore? Ho pensato che si trattasse di un telefono cellulare utilizzando un browser web per navigare su un sito web. Da dove viene l'operatore rientrano in questo? Se la soluzione che propongo di cui sopra non risolve il problema, si prega di inviare una risposta con maggiori dettagli sul Gestore.

Tim

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top