Preciso de um provedor de associação personalizado para integrar autenticação de terceiros em ASP.NET?

StackOverflow https://stackoverflow.com/questions/994051

Pergunta

Tenho uma aplicação ASP.NET MVC em que acabo integrou o href="https://rpxnow.com" rel="nofollow noreferrer"> RPX de terceiros sistema de identidade federada

Eu sou muito novo para ASP.NET (eu estou aprendendo com MVC), e eu descobri um pouco sobre o modelo de provedor de dados de associação e de perfil, e parece incrivelmente complexa (mas igualmente poderoso) . A coisa específica que eu estou lutando com é a persistência do usuário para o banco de dados. Eu tenho sido até agora usando a implementação SqlMembershipProvider padrão, que tem funcionou bem. No entanto, agora eu quero fazer coisas como armazenar e verificação de um código de verificação no banco de dados para a verificação de e-mail (no caso endereço de e-mail do usuário é listado como não verificado pelo resultado RPX), e persistindo os dados retornados. Parte disso é essencial para autenticação, tais como o endereço de e-mail, enquanto alguns dos que é simplesmente informações de perfil (como a idade do usuário, sexo, etc.).

No banco de dados ASP.NET, eu tenho um monte de outras tabelas específicas app que eu interajo com via NHibernate. O meu entendimento das coisas Membership / perfil no ASP.NET é que ele lida com a persistência, e assim eu não preciso fazer nada com NHibernate para obter este curso.

O meu objectivo é que o sign-on experiência para ser semelhante à StackOverflow de, mas com alguns pedaços extras (tais como a verificação de e-mail). Preciso construir um full-on provedor personalizado para estar fazendo isso, ou eu posso dobrar o SqlMembershipProvider padrão para a minha vontade de uma forma eficaz?

[Veja também minha outra pergunta , sobre senhas em um tal pedido.]

Foi útil?

Solução

Eu tenho feito um trabalho semelhante no passado apenas através da criação de uma nova classe de provedor que herda de SqlMembershipProvider, em seguida, substituindo os métodos que eu preciso.

Você ainda pode chamar a implementação método base para fazer a maioria do trabalho em primeiro lugar, em seguida, executar qualquer lógica adicional que você precisa em sua classe derivada. Construção de um provedor a partir do zero é um monte de trabalho, e deve ser apenas o seu último recurso.

Você pode adicionar uma nova tabela para o banco de dados com uma referência chave para aspnet_Membership - então você adicionar seus próprios procedimentos armazenados que você chama de seus métodos de provedor de derivados para fazer o que você precisa para esta nova tabela. Isto é melhor do que adicionar colunas ao esquema de adesão, uma vez que mantém o seu material personalizado dissociado.

Você ainda vai precisar para investigar a classe SqlMembershipProvider, em termos do que é necessário substituir, mas acho que esta abordagem irá funcionar para você, com base no que você descreveu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top