The thought would that each handler would encapsulate the logic need to only handle the specific and relevant portion of the task. Your back-channel handler is only going to be interested in destroying the session and nothing more, while your front channel handler would be doing more to ensure redirects are issued. Separating the tasks by type makes sense to hide the details. It's also easier to chase/abstract functionality by type, from a reader's pov rather than by method. 

Your handlers do not have to become public api. They can all safely remain private. Encapsulation here helps to reduce duplicate logic and code, and to ensure each bit of the functionality is contained within its own and only relevant handler.