2011-10-17 20 views
41

Sto costruendo una webapp e ho bisogno di scegliere tra Django e Pyramid. Ho deciso di andare con Pyramid.Autenticazione utente in Pyramid

Capisco che Pyramid sia dotato di un proprio framework di autenticazione/autorizzazione che sembra bello. Ma non ho visto da nessuna parte in Pyramid dove sono definiti utenti/gruppi/permessi. In Django queste cose vengono gratis.

Sto usando SQLAlchemy e mi chiedevo se ci sono utenti/gruppi/permessi simili già costruiti che posso importare. Preferisco non definire questi oggetti/mappature e hash/salting delle password me stesso.

Django's definitions di queste cose sono praticamente tutto ciò di cui ho bisogno.

Qualcuno può indicarmi qualcosa che posso usare? O ho bisogno di rotolare il mio?

risposta

62

Pyramid ha un sistema di autenticazione molto più flessibile. E sì, se vuoi qualcosa di semplice come il concetto di utente/gruppo/permesso di Django, allora la flessibilità potrebbe essere spaventosa.

Pyramid non ha un oggetto "Utente", in quanto non fornisce alcuna ipotesi su come si memorizzano i dati o su quale ORM si utilizza, quindi non c'è qualcosa per te come contrib.auth. Sarà necessario eseguire l'hash/salare le password utilizzando una libreria come cryptacular o passlib, entrambi trovati su PYPI.

Per quanto riguarda l'utente/gruppo/permessi all'interno del sistema Pyramid, ciò è possibile semplicemente definendo un RootFactory che ha un __acl__ che associa i gruppi alle autorizzazioni. Le autorizzazioni sono assegnate alle viste, quindi sono solitamente statiche. Se desideri che i gruppi (quelli che Pyramid chiama "principal") siano dinamici è anche possibile.

Suggerirei di guardare la Piramide wiki2 tutorial, così come lo shootout demo.

Ci sono anche un paio di pacchetti di terze parti per l'assistenza con l'autorizzazione all'interno di Pyramid se si prevede di utilizzare SQLAlchemy. apex è una soluzione a stack più completo e ziggurat_foundations è uno strato di livello inferiore sopra SQLAlchemy per aiutarti a configurare utenti e gruppi per la tua applicazione.

La tua domanda è di livello abbastanza elevato e l'autorizzazione è un "problema difficile", quindi mi fermerò qui ed eviterò di rigurgitare le esercitazioni e le risorse già esistenti dai tutorial di Pyramid a diversi esempi di terze parti. Se avete domande specifiche, non esitate a chiedere a quelle in un'altra domanda.

+0

Grazie, questa è una buona informazione. Più ho guardato all'implementazione di django (e in concomitanza con il tuo repsonse), più mi rendo conto che questa domanda è più una domanda SQLAlchemy dal momento che qualsiasi oggetto correlato a "Utente" dovrebbe essere associato a SQLAlchemy. – lostdorje

+2

Grazie per il puntatore alla demo dello shootout. Molto ben scritto con i modelli utente e di gruppo completi, oltre a una serie completa di test. –

+0

Sii gentile se ci fossero più cose prefabbricate in termini di autenticazione, anche se tutto (o in parte) potrebbe essere spazzato via e sostituito con materiale personalizzato per utenti esperti. È possibile avere un concetto di utente senza presupporre il sistema di archiviazione purché si documentino le operazioni che devono essere implementate attorno ad esso per soluzioni personalizzate. –