So it seems that somewhere in your code, a new session gets created. Without seeing your code, it's hard to guess where that could be.
Dancer2::Session doesn't list any immediate method to invalidate a session, so something else must be going on in your code. Maybe you can reduce your code to the absolute minimum to reproduce the problem and show that here?