¿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 № 1No 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í.