После нажатия "Войти" первая проверка - у сервлета, он тебе должен запомнить в сессию пользователя.
А дальше - уже фильтр должен проверять, что в рамках текущей сессии пользователь уже "представлялся", и пропустить его туда, куда он ломится, ( но только если ему это можно по уровню доступа)
Задача фильтра - как раз не пустить в личный кабинет не залогиненного пользователя.
Для понимания, мне очень помогло -
https://github.com/proton2/ServletJdbcExample
Так же про фильтрацию хорошо разжевано у boostbrain на ютубе, в серии вебинаров (фильтрация в 3 последних вроде бы.)