2008-11-12 13 views
5

Estoy utilizando una sencilla configuración Zend_Auth para autenticar a los usuarios de una de mis aplicaciones, el uso de un cheque en el método preDispatch() en un controller plugin. Cuando los usuarios anónimos navegan a¿Cómo se redirige al URI solicitado después de la autenticación con Zend_Auth?

/users/view/id/6 

por ejemplo, deben ser redirigidos al URI anterior después de la autenticación.

¿Cuál es la mejor manera de hacerlo? Prefiero no almacenar $_SERVER['REQUEST_URI'] en la sesión. Personalmente, encontraría almacenar todo el objeto Zend Request en la solución más limpia, pero no estoy seguro si esto es sensato y si este es el enfoque que debería tomar.

¿Alguna idea?

Respuesta

1

bien la dirección o la remisión a la LoginController podría no ser la mejor manera de llevar a un usuario no-autenticado a la página de inicio de sesión. En cambio, en preDispatch puede tomar el objeto $ request y modificarlo haciendo lo siguiente.

$request->setActionName('someaction'); 
$request->setControllerName('somecontroller'); 

En este punto su solicitud original en la página mantenido todavía está mostrando la página de inicio de sesión. Luego puede modificar su controlador de inicio de sesión para verificar si la ubicación actual de la solicitud es el controlador de inicio de sesión o si es algo diferente. Si se trata de otra cosa (la solicitud original) en un inicio de sesión exitoso, envíelas a esa página.

1

tuvimos el mismo problema y, de hecho lo ha solicitado tienda URI de variable de sesión. Si no coloca ningún objeto específico y no serializable en Zend Request, creo que también estará bien que lo conserve.

Sin embargo, el rendimiento depende de lo que usted está esperando. Serializar objetos como Zend Request puede no ser la mejor idea si tiene un sitio web de alto tráfico.

Cuestiones relacionadas