Recentemente, publiquei a seguinte pergunta no SO: /programming/7197337/using-asp-net-membership-provider-with-an-existing-user-database
Como você pode notar, acabei respondendo à minha própria pergunta, afirmando que parecia que escrever / implementar um "Fornecedor de Associação Personalizado" era o caminho a seguir.
Literalmente, alguns minutos depois, me deparei com esta pergunta: /programming/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407
Eu tento responder e obter um comentário de volta que o provedor de associação .Net é "terrível em muitos níveis". Admito que esta é a primeira vez que estou usando o provedor de associação, mas com certeza me pareceu um problema.
Como não vi nada que respalde a afirmação "terrível", antes de implementar algo "terrível", esperava receber algum feedback da comunidade.
fonte
Respostas:
Portanto, não tenho certeza de que "terrível" é a melhor palavra aqui. No entanto, ele tem limitações e, assim que suas necessidades não se ajustarem ao modo como o provedor de associação foi projetado, você terá muito código de cola. Se você pode usar o provedor de associação imediatamente, eu diria que vá em frente. Assim que você começa a escrever um personalizado, eu questiono usando o material da associação de qualquer maneira.
Na minha experiência, o provedor de associação compra você ...
Tenho certeza de que falta algo mais, mas acho que esses são os grandes. Agora, quando você precisar de gerenciamento de senha personalizado, autenticação de dois fatores, para trabalhar com um modelo de dados existente ou com uma série de outras coisas que você começa a perder. O código que já está escrito para você com a associação deve demorar alguns dias para duplicar se você souber o que está fazendo.
fonte
Não faz o que você quer. À primeira vista, você pode achar que cuida de todas as suas necessidades e algumas, mas surge um novo requisito. Agora você 'realmente' tem que aprender como isso funciona. O benefício de ter tudo isso pré-construído diminui porque você estava nesse falso senso de segurança.
O @Travis mencionou o uso de um modelo de dados existente, mas a escolha do banco de dados também pode ser uma restrição: Oracle?
Não sei se funciona com sistemas de verificação de terceiros como o Facebook ou o Google.
fonte
Eles não são tão flexíveis quanto muitas pessoas pensam em uma leitura rápida dos documentos, mas têm o seu lugar.
Se você não precisar de controle sobre os tokens do usuário e apenas criar um conjunto de dados ou associação de usuários personalizados / estendidos ou precisar extrair esses dados de uma fonte existente / diferente, eles têm o seu lugar.
Se você deseja alterar mais do que isso, geralmente é melhor substituir o módulo http que executa um dos provedores de autenticação, então você obtém todo o controle. A maioria das pessoas que encontrei quebrando coisas com provedores fez a escolha errada para sua situação nesse nível.
De qualquer maneira, você obtém um context.user devidamente preenchido, o que permite continuar usando a maioria das funções de usuário baseadas no asp.net.
fonte
Esta pergunta é antiga, mas estou recebendo distintivos por sua popularidade, então acho que vale a pena fornecer uma resposta atualizada.
O provedor de associação "Simples" da Microsoft finalmente acertou na minha humilde opinião. Se você estiver escrevendo algo novo ou mesmo anexando-se a um banco de dados herdado com um novo aplicativo. Use o provedor de associação simples. MUITO MAIS FÁCIL e LIMPADOR para implementar. Instale algumas tabelas e aponte o provedor para sua lista de usuários e você está basicamente pronto.
Este link o ajudará a começar ou basta pesquisar no Google: http://www.mattjcowan.com/funcoding/2012/11/10/simplemembershipprovider-in-mvc4-for-mysql-oracle-and-more-with-llblgen/
fonte