2009-09-29 18 views
6

Recientemente comencé a aprender/usar django; Estoy tratando de encontrar una manera de tener dos sistemas de autenticación separados para administradores y usuarios. En lugar de crear un sistema de autenticación completamente nuevo, me gustaría aprovechar la funcionalidad incorporada de django (es decir, gestión de sesiones, decodificador @login_required, etc.).Sistema de autenticación de administrador/usuario independiente en Django

Específicamente, quiero tener dos tablas de inicio de sesión separadas - una para los administradores, una para los usuarios. La tabla de inicio de sesión de administración debe ser la tabla predeterminada que django genera con sus campos predeterminados (es decir, id, username, email, is_staff, etc.). La tabla de usuario, por otro lado, quiero tener solo 5 campos - id, email, password, first_name, last_name. Además, quiero usar la administración de sesión integrada de django para ambas tablas de inicio de sesión y el decorador @login_required para sus respectivas vistas. Por último, quiero dos formularios de inicio de sesión distintos y distintos para administradores y usuarios.

¿Alguien tiene alguna sugerencia sobre cómo puedo lograr mi objetivo o saber de algún artículo/ejemplos que puedan ayudarme?

+0

¿Ya no hay suficientes permisos para la mayoría de las tareas? Los administradores son solo usuarios con los permisos adecuados. Y incluso hay 'user.is_staff' /' user.is_superuser' por ahí si no quieres permisos ajustados. – drdaeman

+0

Parece que mi pregunta no estaba clara; He editado mi pregunta agregando más detalles y detalles, con suerte lo que es más claro. Gracias por la información/ayuda. – Dan

Respuesta

1

Si entiendo su pregunta correctamente (y tal vez no), creo que está preguntando cómo crear un formulario de inicio de sesión separado para usuarios que no son administradores, mientras todavía usan los mecanismos de autenticación estándar de Django, modelo User, etc. Esto es soportado nativamente por Django a través de vistas en django.contrib.auth.views.

Quiere comenzar con django.contrib.auth.views.login. Añadir una línea a tu URLconf así:

(r'^/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}) 

El login vista genérica acepta el parámetro template_name, que es la ruta de acceso a la plantilla de inicio de sesión personalizado (hay uno genérico puede utilizar también, proporcionada por django.contrib.auth) .

La documentación completa sobre login, logout, password_change y otras vistas genéricas están disponibles en el Django Authentication Docs.

0

¿Modificar ligeramente las cosas para que los usuarios tengan un prefijo de categoría en su nombre de usuario? No nos ha dado mucha información sobre lo que quiere hacer, es posible que sus necesidades se cumplan mediante el uso de la infraestructura de sitios, o simplemente dos instalaciones separadas de django.

Si lo que intenta hacer es separar la página de inicio de sesión y la de inicio de sesión de administrador, solo use el marco incorporado como se detalla en los documentos para crear una página de inicio de sesión de "usuario" y deje solo el administrador . Si le preocupa que los usuarios de alguna manera comiencen a editar cosas de inicio de sesión de administrador, no lo haga, no lo harán a menos que lo permita.

1

Podría escribir potencialmente uno o más backends de autenticación personalizados. Esto está documentado here. Escribí un backend personalizado para autenticar contra un servidor LDAP, por ejemplo.

Cuestiones relacionadas