symfony - Custom Authentication doesn't authenticate the user correctly -


i setting own custom authenticator in symfony 2.6 have got issue. doesn't authenticate user correctly. authenticate @ first fails.

here goes security.yml

security:     encoders:         mlm\bundle\mlmbundle\entity\empreendedor:             algorithm: bcrypt             cost: 12      role_hierarchy:         role_admin:       role_user         role_empreendedor:        role_user         role_super_admin: [role_user, role_admin, role_allowed_to_switch]      providers:         empreendedor_provider:             id: empreendedor.user.provider       firewalls:         # disables authentication assets , profiler, adapt according needs         dev:             pattern:  ^/(_(profiler|wdt)|css|images|js)/             security: false          area_empreendedor_login:             pattern:  ^/escritorio-virtual/login$             #anonymous: ~             security: false         area_empreendedor:             pattern: ^/escritorio-virtual             provider: empreendedor_provider             simple_form:                 authenticator: empreendedor_authenticator                 check_path: escritorio_virtual_login_check                 login_path: escritorio_virtual_login             logout:                 path:   escritorio_virtual_logout                 target: escritorio_virtual_index      # these settings can restrict or allow access different parts     # of application based on roles, ip, host or methods     # http://symfony.com/doc/current/cookbook/security/access_control.html     access_control:         - { path: ^/escritorio-virtual, roles: role_empreendedor } 

my custom authenticator

class empreendedorauthenticator implements simpleformauthenticatorinterface {     private $encoder;      public function __construct(userpasswordencoderinterface $encoder)     {         $this->encoder = $encoder;     }      public function authenticatetoken(tokeninterface $token, userproviderinterface $userprovider, $providerkey)     {         try {             $user = $userprovider->loaduserbyusername($token->getusername());         } catch (usernamenotfoundexception $e) {             throw new authenticationexception('invalid username or password. 1');         }          $passwordvalid = $this->encoder->ispasswordvalid($user, $token->getcredentials());          if ($passwordvalid) {              return new usernamepasswordtoken(                 $user,                 $user->getpassword(),                 $providerkey,                 $user->getroles()             );         }          throw new authenticationexception('invalid username or password. 2');     }      public function supportstoken(tokeninterface $token, $providerkey)     {         return $token instanceof usernamepasswordtoken         && $token->getproviderkey() === $providerkey;      }      public function createtoken(request $request, $username, $password, $providerkey)     {         return new usernamepasswordtoken($username, $password, $providerkey);     } } 

and log

[2015-06-02 14:46:33] request.info: matched route "escritorio_virtual_login_check" (parameters: "_controller": "mlm\bundle\mlmbundle\controller\escritoriovirtualsecuritycontroller::logincheckaction", "_route": "escritorio_virtual_login_check") [] [] [2015-06-02 14:46:33] security.debug: read securitycontext session [] [] [2015-06-02 14:46:33] security.debug: reloading user user provider. [] [] [2015-06-02 14:46:33] doctrine.debug: select t0.id id1, t0.nome nome2, t0.codigo_indicacao codigo_indicacao3, t0.rua rua4, t0.numero numero5, t0.complemento complemento6, t0.bairro bairro7, t0.cidade cidade8, t0.cep cep9, t0.cpf cpf10, t0.email email11, t0.username username12, t0.telefone_fixo telefone_fixo13, t0.telefone_celular telefone_celular14, t0.telefone_comercial telefone_comercial15, t0.password password16, t0.is_active is_active17, t0.lft lft18, t0.rgt rgt19, t0.criado criado20, t0.atualizado atualizado21, t0.is_enabled is_enabled22, t0.is_account_non_locked is_account_non_locked23, t0.is_account_non_expired is_account_non_expired24, t0.email_confirmado email_confirmado25, t0.email_confirmado_em email_confirmado_em26, t0.aprovado aprovado27, t0.aprovado_em aprovado_em28, t0.aprovado_por aprovado_por29, t0.foto foto30, t0.estado_id estado_id31, t0.patrocinador_id patrocinador_id32 empreendedor t0 t0.email = ? limit 1 ["email@email.com"] [] [2015-06-02 14:46:33] security.debug: username "email@email.com" reloaded user provider. [] [] [2015-06-02 14:46:33] doctrine.debug: select t0.id id1, t0.nome nome2, t0.codigo_indicacao codigo_indicacao3, t0.rua rua4, t0.numero numero5, t0.complemento complemento6, t0.bairro bairro7, t0.cidade cidade8, t0.cep cep9, t0.cpf cpf10, t0.email email11, t0.username username12, t0.telefone_fixo telefone_fixo13, t0.telefone_celular telefone_celular14, t0.telefone_comercial telefone_comercial15, t0.password password16, t0.is_active is_active17, t0.lft lft18, t0.rgt rgt19, t0.criado criado20, t0.atualizado atualizado21, t0.is_enabled is_enabled22, t0.is_account_non_locked is_account_non_locked23, t0.is_account_non_expired is_account_non_expired24, t0.email_confirmado email_confirmado25, t0.email_confirmado_em email_confirmado_em26, t0.aprovado aprovado27, t0.aprovado_em aprovado_em28, t0.aprovado_por aprovado_por29, t0.foto foto30, t0.estado_id estado_id31, t0.patrocinador_id patrocinador_id32 empreendedor t0 t0.email = ? limit 1 ["email@email.com"] [] [2015-06-02 14:46:34] security.info: user "email@email.com" has been authenticated [] [] [2015-06-02 14:46:34] security.debug: fallback default authentication success handler [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\debughandlerslistener::configure". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\profilerlistener::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\dumplistener::configure". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\bundle\frameworkbundle\eventlistener\sessionlistener::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\fragmentlistener::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\routerlistener::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\localelistener::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\translatorlistener::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.request" listener "symfony\component\security\http\firewall::onkernelrequest". [] [] [2015-06-02 14:46:34] event.debug: listener "symfony\component\security\http\firewall::onkernelrequest" stopped propagation of event "kernel.request". [] [] [2015-06-02 14:46:34] event.debug: listener "symfony\bundle\asseticbundle\eventlistener\requestlistener::onkernelrequest" not called event "kernel.request". [] [] [2015-06-02 14:46:34] event.debug: listener "knp\bundle\paginatorbundle\subscriber\slidingpaginationsubscriber::onkernelrequest" not called event "kernel.request". [] [] [2015-06-02 14:46:34] event.debug: listener "stof\doctrineextensionsbundle\eventlistener\blamelistener::onkernelrequest" not called event "kernel.request". [] [] [2015-06-02 14:46:34] security.debug: write securitycontext in session [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\responselistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "symfony\component\security\http\rememberme\responselistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "sensio\bundle\frameworkextrabundle\eventlistener\httpcachelistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\profilerlistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "symfony\bundle\webprofilerbundle\eventlistener\webdebugtoolbarlistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\savesessionlistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\streamedresponselistener::onkernelresponse". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.finish_request" listener "symfony\component\httpkernel\eventlistener\localelistener::onkernelfinishrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.finish_request" listener "symfony\component\httpkernel\eventlistener\translatorlistener::onkernelfinishrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.finish_request" listener "symfony\component\httpkernel\eventlistener\routerlistener::onkernelfinishrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.finish_request" listener "symfony\component\security\http\firewall::onkernelfinishrequest". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.terminate" listener "symfony\bundle\swiftmailerbundle\eventlistener\emailsenderlistener::onterminate". [] [] [2015-06-02 14:46:34] event.debug: notified event "kernel.terminate" listener "symfony\component\httpkernel\eventlistener\profilerlistener::onkernelterminate". [] [] [2015-06-02 14:46:34] request.info: matched route "escritorio_virtual_index" (parameters: "_controller": "symfony\bundle\frameworkbundle\controller\redirectcontroller::urlredirectaction", "path": "/escritorio-virtual/", "permanent": "true", "scheme": "null", "httpport": "80", "httpsport": "443", "_route": "escritorio_virtual_index") [] [] [2015-06-02 14:46:34] security.debug: read securitycontext session [] [] [2015-06-02 14:46:34] security.debug: reloading user user provider. [] [] [2015-06-02 14:46:34] doctrine.debug: select t0.id id1, t0.nome nome2, t0.codigo_indicacao codigo_indicacao3, t0.rua rua4, t0.numero numero5, t0.complemento complemento6, t0.bairro bairro7, t0.cidade cidade8, t0.cep cep9, t0.cpf cpf10, t0.email email11, t0.username username12, t0.telefone_fixo telefone_fixo13, t0.telefone_celular telefone_celular14, t0.telefone_comercial telefone_comercial15, t0.password password16, t0.is_active is_active17, t0.lft lft18, t0.rgt rgt19, t0.criado criado20, t0.atualizado atualizado21, t0.is_enabled is_enabled22, t0.is_account_non_locked is_account_non_locked23, t0.is_account_non_expired is_account_non_expired24, t0.email_confirmado email_confirmado25, t0.email_confirmado_em email_confirmado_em26, t0.aprovado aprovado27, t0.aprovado_em aprovado_em28, t0.aprovado_por aprovado_por29, t0.foto foto30, t0.estado_id estado_id31, t0.patrocinador_id patrocinador_id32 empreendedor t0 t0.email = ? limit 1 ["email@email.com"] [] [2015-06-02 14:46:34] security.debug: username "email@email.com" reloaded user provider. [] [] [2015-06-02 14:46:34] doctrine.debug: select t0.id id1, t0.nome nome2, t0.codigo_indicacao codigo_indicacao3, t0.rua rua4, t0.numero numero5, t0.complemento complemento6, t0.bairro bairro7, t0.cidade cidade8, t0.cep cep9, t0.cpf cpf10, t0.email email11, t0.username username12, t0.telefone_fixo telefone_fixo13, t0.telefone_celular telefone_celular14, t0.telefone_comercial telefone_comercial15, t0.password password16, t0.is_active is_active17, t0.lft lft18, t0.rgt rgt19, t0.criado criado20, t0.atualizado atualizado21, t0.is_enabled is_enabled22, t0.is_account_non_locked is_account_non_locked23, t0.is_account_non_expired is_account_non_expired24, t0.email_confirmado email_confirmado25, t0.email_confirmado_em email_confirmado_em26, t0.aprovado aprovado27, t0.aprovado_em aprovado_em28, t0.aprovado_por aprovado_por29, t0.foto foto30, t0.estado_id estado_id31, t0.patrocinador_id patrocinador_id32 empreendedor t0 t0.email = ? limit 1 ["email@email.com"] [] [2015-06-02 14:46:34] security.info: authentication exception occurred; redirecting authentication entry point (invalid username or password. 2) [] [] [2015-06-02 14:46:34] security.debug: calling authentication entry point [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.exception" listener "symfony\component\security\http\firewall\exceptionlistener::onkernelexception". [] [] [2015-06-02 14:46:35] event.debug: listener "symfony\component\security\http\firewall\exceptionlistener::onkernelexception" stopped propagation of event "kernel.exception". [] [] [2015-06-02 14:46:35] event.debug: listener "symfony\component\httpkernel\eventlistener\profilerlistener::onkernelexception" not called event "kernel.exception". [] [] [2015-06-02 14:46:35] event.debug: listener "symfony\component\httpkernel\eventlistener\exceptionlistener::onkernelexception" not called event "kernel.exception". [] [] [2015-06-02 14:46:35] security.debug: write securitycontext in session [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\responselistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "symfony\component\security\http\rememberme\responselistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "sensio\bundle\frameworkextrabundle\eventlistener\httpcachelistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\profilerlistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "symfony\bundle\webprofilerbundle\eventlistener\webdebugtoolbarlistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\savesessionlistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.response" listener "symfony\component\httpkernel\eventlistener\streamedresponselistener::onkernelresponse". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.finish_request" listener "symfony\component\httpkernel\eventlistener\localelistener::onkernelfinishrequest". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.finish_request" listener "symfony\component\httpkernel\eventlistener\translatorlistener::onkernelfinishrequest". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.finish_request" listener "symfony\component\httpkernel\eventlistener\routerlistener::onkernelfinishrequest". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.finish_request" listener "symfony\component\security\http\firewall::onkernelfinishrequest". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.terminate" listener "symfony\bundle\swiftmailerbundle\eventlistener\emailsenderlistener::onterminate". [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.terminate" listener "symfony\component\httpkernel\eventlistener\profilerlistener::onkernelterminate". [] [] [2015-06-02 14:46:35] request.info: matched route "escritorio_virtual_login" (parameters: "_controller": "mlm\bundle\mlmbundle\controller\escritoriovirtualsecuritycontroller::loginaction", "_route": "escritorio_virtual_login") [] [] [2015-06-02 14:46:35] event.debug: notified event "kernel.request" listener "symfony\component\httpkernel\eventlistener\debughandlerslistener::configure". [] [] 

i sorted out issue. missed 1 field in user serialization username. that's why after redirect, authentication fails. username couldn't recovered. after adding it. works charm.

/** @see \serializable::serialize() */ public function serialize() {     return serialize(array(         $this->id,         $this->name,         $this->username,         $this->email,         $this->password,         $this->isenabled,         $this->isaccountnonexpired,         $this->isaccountnonlocked,     )); }  /** @see \serializable::unserialize() */ public function unserialize($serialized) {     list (         $this->id,         $this->name,         $this->username,         $this->email,         $this->password,         $this->isenabled,         $this->isaccountnonexpired,         $this->isaccountnonlocked,         ) = unserialize($serialized); } 

Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -