GOOGLE ADS

domingo, 1 de mayo de 2022

Problema con la redirección de URL de cierre de sesión de Django

He configurado la configuración de redirección de inicio de sesión y cierre de sesión en la configuración de Django como se muestra a continuación:

LOGOUT_REDIRECT_URL = '/login/'
LOGIN_REDIRECT_URL = '/locations/'

Sin embargo, después de cerrar la sesión, la redirección se realiza en el parámetro next=, es decir, la URL se redirige a la misma página desde la que se hizo clic en Cerrar sesión.

Como referencia, aquí está la URL de inicio/cierre de sesión de mi urls.py:

url(r'^', include('rest_framework.urls', namespace='rest_framework')),

PD: estoy usando Django 1.11 y DRF 3.7.3


Solución del problema

La solución anterior no funcionó para mí con Django 2.1+

Después de mirar el código fuente de la función de cierre de sesión

from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.

Terminé creando una vista de cierre de sesión personalizada que llama a la función de cierre de sesión y define una página de redirección

from django.contrib.auth import logout
from django.conf import settings
from django.shortcuts import redirect
def logout_view(request):
logout(request)
return redirect('%s?next=%s' % (settings.LOGOUT_URL, request.path))

Simplemente llame a esta vista en su urls.py en lugar de "cerrar sesión"

urlpatterns = [ 
path('accounts/logout/', views.logout_view),
]

Y ahora una redirección LOGOUT_URL en settings.py realmente funcionará

LOGOUT_URL = '/'

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...