2011-10-17 25 views
41

Estoy creando una aplicación web y necesito elegir entre Django y Pyramid. Decidí ir con Pyramid.Autenticación de usuario en Pyramid

Entiendo que Pyramid viene con su propio marco de autenticación/autorización que se ve bien. Pero no he visto en ninguna parte de Pyramid donde se definan usuarios/grupos/permisos. En Django, estas cosas son gratis.

Estoy usando SQLAlchemy y me preguntaba si hay usuarios/grupos/permisos similares ya construidos que pueda importar. Prefiero no definir estos objetos/mapeos y hash/salazón de contraseñas yo mismo.

Django's definitions de estas cosas son prácticamente todo lo que necesito.

¿Alguien puede apuntarme a algo que puedo usar? ¿O necesito hacer mi propio?

Respuesta

62

Pyramid tiene un sistema de autenticación mucho más flexible. Y sí, si quieres algo simple como el concepto de usuario/grupo/permiso de Django, entonces flexible puede ser aterrador.

Pyramid no tiene un objeto "Usuario", ya que no hace suposiciones sobre cómo almacenar sus datos o qué ORM utiliza, por lo tanto, no hay nada para usted como contrib.auth. Necesitará hash/salt las contraseñas usted mismo usando una biblioteca como cryptacular o passlib, ambas encontradas en PYPI.

En cuanto a querer usuario/grupo/permisos dentro del sistema de Pyramid, esto se puede lograr simplemente definiendo una RootFactory que tiene un __acl__ que asigna grupos a permisos. Los permisos se asignan a las vistas, por lo tanto, son bastante estáticos por lo general. Si desea que los grupos (lo que Pyramid llama "principales") sean dinámicos, eso también se puede lograr.

Sugeriría mirar la pirámide wiki2 tutorial, así como el shootout demo.

También hay un par de paquetes de terceros para ayudar con la autorización dentro de Pyramid si planea usar SQLAlchemy. apex es una solución de pila más completa, y ziggurat_foundations es una capa de nivel inferior sobre SQLAlchemy para ayudarlo a configurar usuarios y grupos para su aplicación.

Su pregunta es de un nivel bastante alto y la autorización es un "problema difícil", así que me detendré aquí y evitaré regurgitar los tutoriales y recursos que ya existen desde los tutoriales de Pyramid a varios ejemplos de terceros. Si tiene preguntas específicas, siéntase libre de preguntarlas en otra pregunta.

+0

Gracias, eso es buena información. Cuanto más he visto la implementación de django (y junto con tu respuesta también), más me doy cuenta de que esta pregunta es más una pregunta de SQLAlchemy ya que cualquier objeto relacionado con el "Usuario" debería estar vinculado a SQLAlchemy. – lostdorje

+2

Gracias por el puntero a la demo de shootout. Muy bien escrito con modelos completos de Usuario y Grupo, así como un conjunto completo de pruebas. –

+0

Se agradable si hubiera más elementos precompilados en términos de autenticación, incluso si todo (o parte) se pudiera volar y reemplazar con material personalizado para usuarios avanzados. Puede tener un concepto de usuario sin asumir el sistema de almacenamiento, siempre que documente las operaciones que necesitan implementarse para soluciones personalizadas. –

Cuestiones relacionadas