Как сделать логин на сайте?

Возьмём какую-нибудь статью-туториал:

Что мы видим:

  1. что она на нерусском языке, а где на русском?
  2. что её написал опытный в общем человек, который “начинал во времена Java 1.4”, то есть в 2002-м году или чуть раньше (Java 1.4, also known as J2SE 1.4, was released on 2002-02-06), и он прошел формальную сертификацию, в том числе по web-программированию (SCWCD = Sun Certified Web Component Developer)
  3. что статья написана в 2019-м году, то есть в те времена уже существовали разные фремворки (Spring, Spring Boot, Hibernate), однако автор ими не пользовался, по неизвестным причинам.
  4. Задача организации логина на сайте сложнее, чем описано в статье. Нужно ещё этот email проверить, для этого нужно настроить отправку почты, а это непросто (или через провайдера, или через сторонний сервис, или много самому изучать).
  5. нужно давать пользователю возможность восстанавливать доступ, в статье это не сделано.
  6. появились альтернативные средства регистрации - через соцсети
  7. появилась технология 2FA, для подтверждения логина с мобильного телефона
  8. существует необходимость обеспечивать логин для нескольких сайтов, разных авторов, это нужно для коллабораций.
  9. Зарегистрировавшихся пользователей надо иметь возможность банить, значит нужны роли для логинов (админ/не админ), и интерфейс для управления пользователями.
  10. сейчас ещё популярный протокол Matrix, можно попробовать использовать его вместо почты для регистрации
  11. нужно подобрать законодательство России на тему работы с персональными данными, предоставления услуг связи, хранения переписки в течении какого-то там срока для интересов следствия.
  12. вообще хорошо бы ещё рассмотреть подключение к аутентификации портала ГосУслуг, когда я это делал последник раз, оно было платное (возможно ли это сейчас и сколько оно стоит, будет ли конкурентоспособной альтернатива такого сервиса? Существуют ли коммерческие альтернативы, можно ли подключиться к “Яндекс-паспорту”?).

Всё вместе потянет на книгу. Кстати, вы её такую видели?

Пример проекта на Github:

он сложнее, чем первая статья тем, что теперь ещё придётся выучить Maven для того, чтобы просто его собрать. На это намекает pom.xml в корне (инструкция по сборке, конечно, отсутствует).

В первой тоже он лежит в архиве в конце статьи.