Symfony2: Implementar AdvancedUserInterface en lugar de UserInterface

Cuando creas una clase User para cargar usuarios vía Doctrine ORM lo normal es implementar la interfaz UserInterface, pero es muy probable que esta clase acabe teniendo atributos como enabled, locked, etc. para controlar el estado de un usuario, como la clase User de FOSUserBundle. Para esto el componente de seguridad de Symfony dispone de la interfaz AdvancedUserInterface que provee metodos para comprobar el estado de un usuario.

La interfaz AdvancedUserInterface es la siguiente:

El código está muy bien documentado y como indica, implementando esta interfaz hará que en el proceso de autenticación se comprueben estos métodos. Si por ejemplo no tenemos ningún atributo para el método isCredentialsNonExpired, se devuelve true.

Más información en el cookbook.