Domanda

Nel mio progetto pet voglio avere un sistema utente con i seguenti requisiti:

  • Ha bisogno di lavorare con db4o come un modello di persistenza
  • Voglio usare DI (tramite Turbina ) per fornire le dipendenze necessarie per il mio modello utente
  • Deve essere facile da collegare ad asp.net-MVC
  • Ha bisogno di essere testabile senza più problemi
  • Ha bisogno di supportare gli utenti anonimi molto simile lo fa
  • Voglio Autenticazione e autorizzazione separati (il primo in grado di vivere senza il secondo)
  • Ha bisogno di essere sicuri

Sono consapevole che sto mettendo un paio di tecnologie prima di funzionalità qui, ma in quanto è un progetto da compagnia e voglio imparare alcune cose nuove Penso che sia ragionevole per includerli come requisiti.

A metà strada in rotazione mia mi sono reso conto che sto soffrendo probabilmente alcuni NIH .
Come non ho davvero piace come inutilmente complesso il quadro utente esistente in asp.net è, in realtà è per lo più solo tutta la roba più complicata per quanto riguarda la sicurezza che ora mi dà qualche dubbio. Sarebbe difendibile di andare avanti e rotolare il mio? Se no come si va su che soddisfi tutti i requisiti di cui sopra con il framework basato IPrinciple esistente?

È stato utile?

Soluzione

Sembra a me come quello che si vuole fare è rotolare il proprio provider di appartenenze personalizzato .NET.

E 'vi permetterà di utilizzare il built-in ASP.NET Autenticazione / Autorizzazione attributo s sulle azioni di controllo, mentre si dà il controllo completo sul implementazione all'interno del fornitore (che vi permetterà di codificare per soddisfare i requisiti di cui sopra).

diretti da MSDN ...

Implementazione di un provider di appartenenze

Altri suggerimenti

Credo che si riconoscono in cui le parti sottili in vostra considerazione sono: vale a dire in che hai inserito come fare quello che stai facendo come motivo nel motivo per cui si sta facendo e il NIH (divertente: non avevo mai visto che) problema prima.

Mettendo da parte quelle, il provider è qualcosa che si potrebbe potenzialmente riutilizzare e si può semplificare alcuni dei vostri sforzi futuri. Dovrebbe anche servire a familiarizzare ulteriormente con la questione. Finché si capisce il framework ASP.NET modo da poter lavorare con esso anche se è necessario (e non sono così particolare che non si sa cosa si sta facendo, se non si sta usando il vostro strumento) allora io ritiene di aver già messo con la vostra difesa.

Come accennato DOK, essere prudenti che non sei rotazione proprio qui per evitare un compito più grande a portata di mano in qualsiasi vostra altra funzionalità è. Non lasciate che questo sia una distrazione: dovrebbe essere qualcosa la vostra applicazione ha davvero bisogno. Se non lo è, allora sarei magra verso concentrandosi sulla missione principale del software, invece.

Se si va avanti e creare la propria soluzione personalizzata, si avrà una migliore idea di quanto sia difficile e quali caratteristiche si desidera. Questo vi aiuterà a valutare le soluzioni off-the-shelf per i progetti futuri.

OTOH, passare il tempo in via di sviluppo funzionalità che è già prontamente disponibile significa che non permetterà di trascorrere quel tempo lavorando sulla funzionalità principale del progetto. A meno che l'autenticazione e l'autorizzazione sono una componente importante del progetto, si potrebbe pensare di investire il vostro tempo, ed espandere la vostra conoscenza, in un'altra zona.

Anche io sto lavorando su un progetto di pet utilizzando ASP.net MVC e db4o e fatto la stessa cosa, in modo da siete almeno non solo andare giù questa strada :). Uno dei principali motivi per me per iniziare a giocare in giro con db4o come strato di persistenza è che soprattutto l'autorizzazione a livello di campo (cioè mi è permesso di vedere prima il nome di persona A, ma non il primo nome di persona B) è però da realizzare se sei costretto in istruzioni SQL complesse e di un modello di dominio anemico.

Da quando ho avuto necessità di autorizzazione complesse che dovevano essere persisteva (e sincronizzato) sia in db4o e Solr indici ho iniziato a lavorare a rotolare fuori la mia, ma solo perché sapevo in anticipo che era una delle caratteristiche chiave del mio animale domestico progetto che ho voluto il controllo del 100% rispetto.

Ora potrei continuare a utilizzare il provider di appartenenze .Net per l'autenticazione ma non (solo) per l'autorizzazione degli oggetti, ma solo dopo che ho POC'd mia autorizzazione ha bisogno usando la mia.

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