1) Работа конструктора - засетить значения и инициализировать объект. В конструкторе не стоит подключаться к базе, обращаться к файловой система, и делать хоть что-то сложнее простого вызова сеттеров. Так же нестоит вызывать из него методы которые делают что-либо из перечисленного.
2) Класс User не должен ничего знать о том как проверить свой логин и пароль. За это должен отвечать какой-нибудь SecurityContext.
3) Делайте проверку тогда, когда у вас попросили. Что-то типа в методе isFullyAuthorized и т.д.
Далее подсказать ничего толком не выйдет так как не известно что у вас там происходит, зачем исключения и т.д. В любом случае вы должны выбросить какое-то свое исключение аля BadCredentials и отдать пользователю 400-ую или 401 ошибку.