Estou errado em querer rolar meu próprio sistema de autenticação / Autorizar Dados os seguintes requisitos?

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

Pergunta

No meu projeto de estimação Eu quero ter um sistema de usuário com os seguintes requisitos:

  • É preciso trabalhar com DB4O como um modelo de persistência
  • Eu quero usar DI (por meio da Turbine ) para entregar as dependências necessárias para o meu modelo de usuário
  • Precisa ser fácil de ligar para asp.net-mvc
  • Ele precisa ser testável sem muita trabalheira
  • É preciso dar suporte a usuários anônimos bem como SO faz
  • Eu quero autenticação e autorização separados (o primeiro pode viver sem o segundo)
  • Ela precisa ser segura

Eu estou ciente que eu estou colocando algumas tecnologias antes funcionalidades aqui, mas como é um projeto de estimação e quero aprender algumas coisas novas eu acho que é razoável para incluí-los como requisitos.

A meio caminho em rolando meu próprio eu percebi que eu provavelmente estou sofrendo alguma síndrome href="http://en.wikipedia.org/wiki/Not_Invented_Here" rel="nofollow noreferrer"> NIH Como eu realmente não gosto como desnecessariamente complexa do quadro de usuário existente em asp.net é, na verdade é a maioria só todas as coisas mais complicadas em matéria de segurança que está agora a dar-me algumas dúvidas. Seria defensável para seguir em frente e fazer a minha própria? Se não como você iria sobre cumprindo todos os requisitos acima com a estrutura baseada IPrinciple existente?

Foi útil?

Solução

Parece-me que o que você quer fazer é rolar o seu próprio provedor personalizado .NET Membership.

Ele permitirá que você use o built-in de autenticação ASP.NET / Autorização atributo s em suas ações do controlador e dando-lhe o controle completo sobre a implementação dentro do provedor (que lhe permitirá código-lo para atender os requisitos acima mencionados).

Direto da MSDN ...

Implementando um provedor Membership

Outras dicas

Eu acho que você reconhecer onde as peças finas em sua consideração são: saber em que você incluiu como fazer o que você está fazendo como motivo de por que você está fazendo isso e o NIH (engraçado: eu nunca visto que antes) questão.

Pondo isso de lado, o seu provedor é algo que você poderia reutilizar e pode simplificar alguns de seus esforços futuros. Ele também deve servir para familiarizá-lo ainda mais com a questão. Contanto que você compreender a estrutura ASP.NET para que possa trabalhar com ele também se você precisa (e não são especializados de tal forma que você não sabe o que está fazendo, se você não está usando sua ferramenta), então eu acredito que você já trabalhada a sua defesa.

Como DOK mencionado, ser cauteloso que você não está rolando seu próprio aqui para evitar uma tarefa maior à mão em qualquer que seja sua outra funcionalidade é. Não deixe que isso seja uma distração: ela deve ser algo que seu aplicativo realmente precisa. Se não for, então eu inclinar-se para se concentrar em núcleo missão do seu software em seu lugar.

Se você vá em frente e criar sua própria solução personalizada, você terá uma idéia melhor de como é difícil e quais as características que você deseja. Isso irá ajudá-lo a avaliar off-the-shelf soluções para projetos futuros.

OTOH, gastar tempo desenvolvendo a funcionalidade que já está meio prontamente disponíveis que você não vai gastar esse tempo a trabalhar na funcionalidade principal do seu projeto. A menos que a autenticação e autorização são um componente importante do seu projeto, você pode considerar investir seu tempo, e expandir o seu conhecimento, em outra área.

Eu também estou trabalhando em um projeto de estimação usando ASP.net MVC e db4o e fez a mesma coisa, então você está, pelo menos, não está sozinho em ir por esse caminho :). Uma das maiores razões para eu começar a brincar com db4o como camada de persistência é que, especialmente a autorização em nível de campo (ou seja, eu estou autorizado a ver o primeiro nome de pessoa A, mas não o primeiro nome de Pessoa B) é que para conseguir se você estiver forçado em instruções SQL complexas e um modelo de domínio anêmico.

Desde que eu tinha necessidades complexas de autorização que precisavam ser persistiu (e sincronizado) em ambos db4o e índices Solr comecei a trabalhar lançando minha própria, mas só porque eu sabia de antemão que era uma das principais características do meu animal de estimação projeto que eu queria o controle de 100% em relação a.

Agora eu ainda pode usar o provedor de .Net associação para autenticação, mas não (apenas) de autorização de objetos, mas somente após i POC'd minhas necessidades de autorização usando o meu próprio.

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