L'implementazione personalizzata di IMembershipService
è un modo per andare se non si desidera utilizzare il modulo predefinito Orchard.Users. Utile quando si desidera eseguire l'autenticazione dei moduli, ma è sufficiente memorizzare i dati di autenticazione da qualche altra parte, non in UserPart.
Se si desidera creare uno schema di autenticazione completamente personalizzato, che sovrascrive quello predefinito basato su modulo (nome utente + password), sovrascrivere IAuthenticationService
.
Quindi, in generale:
IMembershipProvider
è circa la gestione dei dati di autenticazione (creare/recuperare gli utenti)
IAuthenticationProvider
è su come eseguire l'autenticazione (sign in/out/ottenere ecc utente corrente)
A seconda delle esigenze è possibile ignorare uno o entrambi.
I moduli di autenticazione comuni, come quello di OpenAuth, aggiungono ulteriori opzioni di autenticazione a quella predefinita esistente senza realmente sostituirla, IIRC.
fonte
2012-04-16 11:21:50
Se si implementa IMembershipService utilizzando un archivio dati separato, da dove proviene la proprietà ContentItem per l'IUser restituito? – Oll
Hmmm, bella domanda in realtà. 'IUser' deve essere un elemento di contenuto in modo che complichi un po 'le cose, ma solo un po'. È possibile creare un singolo oggetto di contenuto ("Utente" uno, ad esempio) senza parti e inserirne uno come valore della proprietà 'ContentItem' per ogni' IUser'. Se il collegamento di altre parti all'utente non è necessario nello scenario, funzionerà perfettamente. –
Si potrebbe anche ad es. inserisci l'elemento di contenuto del sito corrente lì, quindi non dovrai creare nulla. Il sito attuale è accessibile tramite 'IOrchardServices.WorkContext.CurrentSite'. –