2012-03-08 19 views
7

Actualmente estoy buscando implementar el control de acceso en Django. He leído sobre el permiso incorporado, pero no tiene cuidado por objeto. Por ejemplo, quiero permisos como "Solo el creador puede eliminar sus propios elementos". Así que leí sobre django-guardián. Por otra parte, después de pensarlo, puede ser difícil de gestionar y verificar si las restricciones cambian alguna vez.Django - Django reglas de comparación de permisos Django y utilizando

miro a la siguiente aplicación de gestión de permisos popular llamado Django reglas. Esto parece adecuarse a lo que requiero. Sin embargo, creo que las reglas de django requieren una instancia de modelo (por lo tanto, el nivel de objeto), es decir, si requiero una vista simple como "área de miembros", no realiza esta función.

Esto me ha llevado a pensar en usar tanto el permiso del contrib de los últimos escenarios y Django-reglas para el primero. Mi pregunta aquí, ¿qué tan fácil será administrar ambos marcos de permisos ?. Por ejemplo, tengo diferentes grupos de usuarios. Me preocupa la superposición de escenarios en los que el administrador agregó un permiso particular en el sistema de administración (para permitir el acceso a una vista), pensando que debería ser suficiente pero que está limitado por las restricciones establecidas por las reglas.

Creo que este es un caso común y con humildad en sus consejos y recomendaciones basadas en sus experiencias.

+0

Las reglas de Django no requieren una instancia modelo. Las instancias modelo son opcionales. –

Respuesta

1

Si estás haciendo esto a través del sitio de administración de Django, puede reemplazar los métodos tales como has_delete_permission(). Estos obtienen solicitudes y objetos como argumentos, por lo que puede usarlo para configurar reglas como "Usuario X puede eliminar solo sus propios objetos".

+0

no del todo a través del sitio de administración, pero gracias de todos modos. no han notado esos métodos .. – goh

+0

Si desea hacer esto a través de su propio código, puede agregar métodos como user_can_delete (self, user) a sus modelos y usarlos en su propio código así como en has_delete_permission() métodos de administración . – che

Cuestiones relacionadas