2010-08-25 15 views
6

Cuando un usuario intenta acceder a nuestro sitio web a través de un enlace (por ejemplo, ir a www.website.com/privatepage), se le redirige a una página de inicio de sesión. Una vez que inician sesión, queremos redirigirlos a esa URL prevista. ¿Cómo se hace esto?¿Intención de redirección de URL + redirección predeterminada después del inicio de sesión?

También tenemos un caso de uso donde un usuario inicia sesión desde la página de inicio o va directamente a la página de inicio de sesión sin URL prevista, en este caso nos gustaría redirigirlos a una página predeterminada.

¿Alguien me puede ayudar a resolver esto?

+0

Podrías haber sido más específico al decir que te la ciencia que estás usando Pero lo fundamental es enviar esa url de la página cuando está redirigiendo al usuario para iniciar sesión. De esta forma puede tener la última url y después de un inicio de sesión exitoso redirigir a ella. Lea algo sobre request.referer para obtener más detalles. – AMIT

+0

Sí, como dijo Amit, no podemos ayudar demasiado sin conocer los métodos que estás usando. Mi respuesta es solo una ayuda general. – palswim

Respuesta

4

¿Cómo se los redirecciona a la página de inicio de sesión? Independientemente del método con el que lo haga, puede añadir una variable GET al final de la URL de la página de inicio de sesión y luego hacer referencia a esa variable en la página de inicio de sesión.

Por lo tanto, el usuario quiere acceder a www.example.com/privatepage, pero primero los necesita para iniciar sesión en www.example.com/login. Redirigirlos a www.example.com/login?targetpage=/privatepage, luego en el código de su página de inicio de sesión, puede acceder a la variable targetpage.

3

Normalmente guardo la página en una sesión de PHP antes de redireccionar a la página de inicio de sesión. Luego de iniciar sesión, vea si el valor de la sesión está establecido, si es redirigido a esa página.

5

Podría ser una buena idea tener una lista blanca de URL aceptadas al redirigir de esta manera; de lo contrario, un atacante podría enviar a alguien un enlace como example.com/login?attacker.com/fake_examplecom y el usuario será redirigido al sitio del atacante mientras piensa que acaba de iniciar sesión en su sitio. La URL original apuntaba a su sitio, por lo que parece confiable. Hay muchas cosas desagradables que se pueden hacer con esto, como te puedes imaginar.

6

en su página de inicio de sesión:

si vas a www.example.com/private_page

usando CodeIgniter (en la página privada)

// if user is not logged in... 
$_SESSION['redirect'] = $this->uri->segment(1); 
redirect('login'); 

en la página de inicio de sesión

// successfully logged in.. 
if (isset($_SESSION['redirect'])) { 
    redirect($_SESSION['redirect']); 
} else { 
    // redirect to default page 
} 
Cuestiones relacionadas