Como você está fazendo a autenticação do usuário? Está usando Spring Security, por exemplo?
Geralmente esses frameworks possuem módulos próprios para essas situações, e é mais fácil procurar um "tutorial oficial" de como fazer com eles, do que tentar inventar moda e, como vc mesmo disse, fazer gambiarra.
Na verdade no meu caso, é algo bem customizado, relacionado à empresa que trabalho. Não é usado nenhum tipo de framework conhecido. Por isso, pensei ver quais seriam as possíveis estratégias pra isso e tentar adaptar para o meu caso.