Pregunta

Estoy usando los puntos de vista django.contrib.auth.views.login and .logout. Muy práctico, trabajó fuera de la caja, se desplegará nuevamente AAA +, etc.

El problema surge ya que no estoy usando una página independiente de acceso, sino que tengo un cuadro de inicio de sesión en cada página (a menos que el usuario está conectado, por supuesto). Y así, cuando la combinación nombre de usuario / contraseña es incorrecta, aparece un error. ¿Cuál de estos tres caminos debería elegir?

  • Hay una manera secreta para redirigir a la próxima no sólo en caso de éxito, sino también en caso de error. Si es así, por favor dígame!
  • escribo mi propio punto de vista de inicio de sesión, poniendo a utilizar el sistema de mensajes de Django en el ínterin
  • I escribir una página de inicio de sesión (bueno, es sólo falta una plantilla) para que pueda explotar la maravilla completa del sistema de autenticación de Django.
¿Fue útil?

Solución

Una de las posibles soluciones (+ primeros tercera opción en la lista):

  1. Usted tiene que proporcionar página especial de inicio de sesión (es decir definen registration/login.html) y para no Usuario usuario cada página normal tiene forma de la conexión;
  2. si los inicios de sesión de usuario normalmente (esta lógica maneja en django.contrib.auth.views.login):
    • En la página normales: usuario redirección a la página de donde ella Usuario;
    • En la página de inicio de sesión: si no hay parámetro next, redirigir allí, otra redirección a la página principal;
  3. si el usuario deja de entrada: redirección (o volver a dibujar) página de inicio de sesión con errores proporcionados;
  4. si el usuario está Usuario:. Normal de la página ofrece un enlace para cerrar la sesión (página especial todavía está allí en caso de que si el usuario de re-entrada o entrada a través de otra cuenta de la falta)

En las páginas normales, formulario de acceso debe tener algo como esto <input type="hidden" name="next" value="{{ request.path }}" />.

En la configuración del proyecto:

# in settings.py
LOGIN_URL = '/login'     # this should coinside with url pattern of login view
LOGOUT_URL = '/logout'   # same but for logout view
LOGIN_REDIRECT_URL = '/' # url to main page

N.B .: No consumo django de edifi vista de cierre de sesión en lugar de eso uso mi propia: casi el mismo, pero lo hace de cierre de sesión sólo para las peticiones POST. Esto previene a los usuarios a cierre de sesión por <img src='my_site/logout' /> código malicioso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top