내가 만료 세션이 로그 아웃됩니다하지만 난 구성 파일 security.yml을 남겨 세션의 여기세션이 만료되면 어떻게 강제로 사용자 로그 아웃을 할 수 있습니까?
namespace mio\mioBundle;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\Request;
class RequestListener{
protected $router;
protected $security;
public function __construct(RouterInterface $router, SecurityContext $security)
{
$this->router = $router;
$this->security = $security;
}
public function onKernelRequest(GetResponseEvent $event)
{
echo $event->getRequest()->getSession()->('timeout');
}
}
인사를하는 시간을 액세스 할 수없는 경우 사용자를 강제로 노력하고있어.
security:
firewalls:
frontend:
pattern: ^/
anonymous: ~
form_login:
login_path: /login
check_path: /login_check
default_target_path: /index
success_handler: authentication_handler
logout:
path: /logout
target: /login
success_handler: authentication_handler
security: true
remember_me:
key: loksea
lifetime: 1800
path: /
access_denied_handler: accessdenied_handler
#primero deben de ir los usuarios anonimos si no se entra en loop redirect
access_control:
- { path: /login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/pruebita, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/js, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_A }
- { path: ^/nuevoinforme, roles: ROLE_M }
- { path: ^/, roles: IS_AUTHENTICATED_REMEMBERED }
providers:
user_db:
entity: { class: mio\mioBundle\Entity\Empleado, property: username }
role_hierarchy:
ROLE_M: ROLE_U
ROLE_A: ROLE_U
encoders:
mio\mioBundle\Entity\Empleado: { algorithm: sha1 }
Symfony\Component\Security\Core\User\User: plaintext
세션이 끝나면 다시 로그인하라는 메시지가 표시되지만 사용자 로그 아웃은 필요하지 않습니다. 로그 아웃을 저장할 청취자가 있습니다.
public function onLogoutSuccess(Request $request){
$empleado = $this->security->getToken()->getUser();
$log = new Log();
$log->setFechalog(new \DateTime('now'));
$log->setTipo("Salida");
$log->setEmpleado($empleado);
$this->em->persist($log);
$this->em->flush();
}
세션이 종료되면이 방법을 사용 하시겠습니까? 감사.
아마도 [중복 질문] (http://stackoverflow.com/questions/15504525/symfony2-login-remember-me)입니다. –
@ThomasPotaire 나는 그들에게 똑같은 해결책을 공유 할 수도 있지만 완전히 다른 질문을하고 싶습니다. –