आप 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
देखें
जाहिर है, इसके लिए काम करने के लिए, आपको User
इकाई loginTime
संपत्ति और संबंधित सेटर के साथ होना चाहिए। और आपको उपयोगकर्ता प्रदाता और DaoAuthenticationProvider
के रूप में User
इकाई भंडार का उपयोग करने के लिए लॉगिन कॉन्फ़िगर करने की आवश्यकता है, जैसा कि यहां बताया गया है: http://symfony.com/doc/current/book/security.html#loading-users-from-the-database।
क्या आप हमें बता सकते हैं कि यह आपकी आवश्यकताओं के अनुरूप क्यों नहीं था? आपको और क्या करना होगा? सेवाएं निश्चित रूप से इस तरह के लिए मेरी पसंद होगी ... –