Я раньше делал как в первом варианте, сохранял данные в LocalStorage и после этого в каждом запросе отправлял эти данные на сервер.
На странице где нужна авторизация, стоит скрипт которые обращается к базе данных и сверяет пользователя, если таковой есть и у него достаточно прав для просмотра документа, ему показывается контент.