¿Cómo puedo verificar si el usuario está conectado o no en Symfony?

Estoy creando un portal de empleo para mi proyecto de fin de carrera. Allí debo poner sesión cuando el solicitante de empleo solicita una vacante en particular cuando hace clic en el botón "Aplicar" para verificar si el usuario está conectado al sistema o no. Si ha iniciado sesión, el usuario puede proceder a aplicar y cargar un cv. de lo contrario, debería tener que registrarse en un sistema y, cuando haga clic en la página de aplicación, debería redirigir a la página de registro. Entonces, ¿cómo puedo hacer esto con Symfony? ¿Es posible hacer esta parte de la sesión dentro del botón "aplicar"? No estoy muy familiarizado con Symfony... por favor ayuda

preguntado el 03 de mayo de 12 a las 08:05

2 Respuestas

Tiene una función en sfBasicSecurityUser que le dice si el usuario está conectado:

// in template
$sf_user->isAuthenticated();

// in action
$this->getUser()->isAuthenticated();

Y antes de redirigir al usuario al sistema de inicio de sesión, puede almacenar el referente usando ->getReferer():

$request->getReferer();

Y si puedes, usa Complemento sfGuardDoctrine para manejar su gestión de usuarios (usuario, grupo, permiso, inicio de sesión, registro, etc ..)

Edit:

Entonces, dentro de su acción de inicio de sesión, agrega algo como eso:

// store the referer url in the session for a future use, if it's doesn't already exists
if($this->getUser()->getAttribute('referer_url', null, 'login'))
{
  $this->getUser()->setAttribute('referer_url', $request->getReferer(), 'login');
}

En su acción de inicio de sesión:

// retrieve the referer in session, otherwise the one in request, otherwise redirect to homepage
$signinUrl = $this->getUser()->getAttribute('referer_url', $request->getReferer(), 'login');
$this->getUser()->getAttributeHolder()->remove('referer_url');

return $this->redirect('' != $signinUrl ? $signinUrl : '@homepage');

Editar 2:

Y si desea una redirección personalizada, configúrela antes de la redirección a la página de inicio de sesión:

$this->getUser()->setAttribute('referer_url', 'my/custom/url', 'login');

contestado el 03 de mayo de 12 a las 17:05

dentro de mi página vacancySucess, he usado un enlace para solicitar trabajo "> ">Entonces, lo que quiero saber es si puedo usar la parte de la sesión cuando una persona hace clic en el botón "Aplicar". ">Entonces, ¿es posible? ">- shumz

si, define tu acción applyVacancy as seguro y luego su usuario será redirigido a la página de inicio de sesión si no ha iniciado sesión. - j0k

en mi clase de acción applyVacancy he puesto if ($request->isMethod('post')){ $this->form->bind($request->getParameter('vacancy'), $request->getFiles(' vacante')); if ($este->formulario->esVálido()){ $archivo = $este->formulario->getValue('archivo'); $filename=sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension()); $archivo->save(sfConfig::get('sf_upload_dir').'/'.$nombrearchivo); $this->redirect('vacante/listAllVacancy'); Entonces, antes de ejecutar esa parte, necesito poner esa parte de redireccionamiento, ¿verdad? porque desde el código anterior solía cargar un cv. - shumz

así que necesito poner applyVacancy: is_secure: true credentials: ROLE_USER_HOME_PAGE en la página lateral security.yml - shumz

Si usa is_secure, no tiene que preocuparse por la redirección, Symfony lo manejará automáticamente. - j0k

Si almacena la sesión de usuario manualmente así:

// in action<br>
$this->getUser()->setAttribute('user', $user);

puede verificar para este usuario así:

// in action
$this->getUser()->getAttribute('user');

entonces puede verificar si existe un objeto de usuario ...

contestado el 03 de mayo de 12 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.