Implementando um provedor personalizado Membership com requisitos ligeiramente bizarros
-
06-09-2019 - |
Pergunta
A construção de uma nova Plataforma Web Mobile para usuários móveis para compra e download de conteúdo em seus celulares. No passado, usei um totalmente bespoke mecanismo de login, mas eu estou investigando usando um provedor personalizado Membership para a próxima versão da plataforma.
A coisa é, nós temos algumas "Login" requisitos mecanismo um pouco estranhos, então eu não estou 100% de certeza que um MembershipProvider é o mais adequado.
Basta olhar para alguns de volta geral de alimentação sobre os requisitos abaixo com um "Provedor Sim, adesão é um bom ajuste" ou "Não, você está batendo um pino quadrado em um buraco redondo"
Requisitos
-
O usuário pode ser necessário para o login com um "Mobile Number" (nome de usuário) e "Pin" (senha) Isso se encaixa muito bem, como eles já se inscreveram e confirmados com um SMS e satisfaz os
ValidateUser(string username, string password)
Implementation Method -
O usuário pode ser necessário para o login com apenas um "número de celular". Neste caso, não se incomode fazendo a verificação de identidade do nosso lado. Ele reduz o número de passos para o utilizador e verificação é feita pelo operador em particular quando tentamos cobrá-los. (Os operadores podem validar que o número de telemóvel introduzido, partidas com o aparelho quando ele atinge o site de pagamento operador) ... por isso mesmo que os usuários tenham uma senha, tínhamos necessidade de blefar o provedor de associação de alguma maneira, e deixá-los em com uma senha em branco.
-
O usuário não precisa fazer o login em tudo. Neste caso, podemos transparente saltar o usuário para uma página especial do operador de rede, e nós vamos chegar a número de celular em cabeçalhos quando eles estão transparente saltou de volta para nós. Neste caso, precisaríamos tomar programaticamente que o número dos cabeçalhos, execute o login em seu nome no código por trás (novamente sem qualquer pin / senha) e o usuário seria magicamente auto logado.
Requisito 2 & 3 são pouco estranho. Nós têm essencialmente 3 mecanismos de login diferentes que o prestador de um membro seria necessário para satisfazer.
- Introduzido Utilizador Móvel & usuário Introduzido Pin
- Introduzido usuário móvel Only (código por trás Suponho que para satisfazer a exigência pinos)
- completamente transparente Login (código por trás para fazer todo o processo de login)
Alguém tem alguma volta comentários / feed na acima ou tem algum conselho sobre qualquer implementação de provedor de associação bizarra que você fez no passado.
Solução
Eu acho que poderia trabalhar. Fazemos # 3 em um de nossos sites. Aqui está um pedaço de código que usamos para cuidar dela. Para usar isso, crie uma página de login (transparentlogin.aspx ou algo similar), certifique-se de que o arquivo web.config permite o acesso anônimo a esta página e código put como esta na função page_load para a página 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");
}
Em seguida, na função ValidateUser na MembershipProvider, certifique-se de fazer uma verificação de como isto:
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;
}
Quanto à exigência # 2, eu estou um pouco confuso. O que exatamente é um operador? Pensei que estávamos lidando com um telefone celular usando um navegador web para navegar para um site. Qual o lugar da operadora em que? Se a solução que proponho acima não ajudar, por favor postar uma resposta com mais detalhes sobre o operador.
Tim