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.