Subclasses likely have to implement the following:
- an TokenInterface to hold authentication related data
- an AuthenticationProvider to perform the actual authentication of the
token, retrieve the UserInterface implementation from a database, and
perform the specific account checks using the UserChecker
By default, this listener only is active for a specific path, e.g.
login_check. If you want to change this behavior, you can overwrite the
requiresAuthentication() method.