사용자가 마지막으로 로그인 한 시간을 저장할 수있는 방법이 있습니까?Symfony2 로그인 및 보안
저는 symfony2를 사용하고 있으며 모든 것이 보안 설정과 함께 올바르게 작동합니다.
이 질문에 대한 답변은 Security and login on a Symfony 2 based project인데, 내 질문에 맞지 않습니다.
다른 해결책이 있습니까?
사용자가 마지막으로 로그인 한 시간을 저장할 수있는 방법이 있습니까?Symfony2 로그인 및 보안
저는 symfony2를 사용하고 있으며 모든 것이 보안 설정과 함께 올바르게 작동합니다.
이 질문에 대한 답변은 Security and login on a Symfony 2 based project인데, 내 질문에 맞지 않습니다.
다른 해결책이 있습니까?
사용자가 성공적으로 로그인 할 때 심포니가 호출 할 AuthenticationHandler
을 만들 수 있습니다.이 시나리오가 있다고 가정하면 User
엔티티 속성에 로그인 시간을 저장할 수 있습니다.
첫째, 성공 인증 핸들러 작성 :
namespace Acme\TestBundle\Handler;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\DependencyInjection\ContainerAware;
class AuthenticationHandler extends ContainerAware implements AuthenticationSuccessHandlerInterface
{
function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$token->getUser()->setLoginTime(new \DateTime());
$this->container->get('doctrine')->getEntityManager()->flush();
return new RedirectResponse($this->container->get('router')->generate('login_success'));
}
}
이 그럼 당신은 예를 들어, 구성 파일에 서비스로 인증 핸들러를 등록 할 필요가 src/Acme/TestBundle/resources/Config/services.yml
services:
authentication_handler:
class: Acme\TestBundle\Handler\AuthenticationHandler
calls:
- [ setContainer, [ @service_container ] ]
을하고 로그인을 구성 생성 된 핸들러를 사용하기위한 양식, 귀하의 체크 아웃 귀하의 체크 아웃 귀하의 security.yml
form_login:
success_handler: authentication_handler
분명히 작동하려면 loginTime
속성과 해당 설정자를 사용하여 User
엔티티가 있어야합니다. 그리고 User
엔터티 저장소를 사용자 공급자로 사용하고 여기에 설명 된 DaoAuthenticationProvider
(http://symfony.com/doc/current/book/security.html#loading-users-from-the-database)을 사용하도록 로그인을 구성해야합니다.
'flush() '전에 Handler에서'persist()'호출을 놓쳤습니다 –
Mmmm ...'persist()'가 필요하지 않다고 생각합니다. 왜냐하면'User' 저장소는'User' 저장소를 통해 이미 Doctrine 엔티티 관리자에 의해 관리되기 때문입니다. 이 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/unitofwork.html#how-doctrine-keeps-track-of-objects를 확인하십시오. – eagleoneraptor
예에서 사용자를 'login_success'경로로 리디렉션합니다. 로그인 양식에 'target_path_parameter'를 사용하고 있습니다. 사용자를 이동하려는 페이지로 리디렉션 할 수 있습니까 (관리자 페이지, 제품 페이지 등인지 모릅니다)? –
데이터베이스의 각 사용자 항목에 "last_login"필드가있는 경우 매우 간단한 해결책은 응용 프로그램에 FOSUserBundle을 구현하는 것입니다.
귀하의 필요에 맞지 않는 이유를 말씀해 주시겠습니까? 그 밖의 무엇을해야할까요? 서비스는 확실히 이런 식으로 제 선택 일 것입니다 ... –