/ / Redirigir a otro dominio después del inicio de sesión de Python-social-auth - Python, django, redirect, python-social-auth

Redirigir a otro dominio después del inicio de sesión de Python-social-auth - python, django, redirect, python-social-auth

¿Es posible redirigir a otra web después de iniciar sesión con python-social-auth?

digamos:

<a href="{% url "social:begin" "facebook" %}?next={{ request.path }}"></a>

El ejemplo anterior está de acuerdo con la documentación y está funcionando bien, pero cuando intento esto:

<a href="{% url "social:begin" "facebook" %}?next=http://www.google.com/"></a>

Obtuve el siguiente error:

http://example.com:8000/accounts/profile/ Not Found

Esto tiene sentido; No tengo esta URL definida

En este punto ya he iniciado sesión, pero veo una página de error.

Pero con la misma configuración, si redirecciono a mi propio sitio, esto funciona, creo que esto es algo relacionado con la configuración, pero no sé cuál.

EDITAR:

Si quito el next GET param en la primera configuración, levanta el mismo error.

Respuestas

1 para la respuesta № 1

No es seguro redirigir a un dominio diferente, por ejemplo, https://www.google.com. Para entender por qué, imagina que envío a tus usuarios un enlace a:

http://www.yoursite.com/login?next=http://myevilsite.com

Si su página de inicio de sesión es de confianza next url, luego sus usuarios serán redirigidos a mi sitio después de que hayan iniciado sesión. Podría usar esto para ataques de phishing.

Para evitar esto, Django comprueba que es seguro redirigir a la siguiente URL. Si no es seguro, entonces se redireccionará al settings.LOGIN_REDIRECT_URL, que por defecto es /accounts/profile/. Usted puede ver el código aquí.