Необходимо дать возможность неавторизованному юзеру сохранять настройки. Это относится к разрешениям сохранения разных типов кук и рассылки писем. Как это правильно сделать? Создать куку, которая идентифицирует юзера, и ее значение писать в БД?
Если юзер не авторизирован, что в бд писать ? Ты его не определил скажем так. Для гостей кроме определенной сессии или кук, никуда писать, как мне кажется, не стоит.
Да, создавайте анонимного пользователя в БД. Желательно это делать после каких-либо действий на изменение со стороны пользователя (POST-запроса), чтобы не возиться с отсеиванием всех подряд ботов.
Идентифицировать без аутентификации - чтобы авторизовать на некоторые действия. Поддерживаю совет miketomlin. [offtopic] Если коротко, то готовые решения по управлению правами (RBAC, ACL и тд) подразумевают, что правами обладает пользователь. Создавать приложение, где правами обладают ещё какие-то параллельные сущности, будет слишком сложно и дорого. [/offtopic]
Ну с плашкой "наш сайт использует куки. это понятно?" всё прсто. Когда посетитель кликает "понятно", пишем куку, а пока её нет, выводим плашку. Кстати, само событие "согласен" можно использовать для неявного создания анонимного аккаунта. Что касается рассылок, то обладать почтовым адресом может только зарегистрированный пользователь. Другое дело, что создание аккаунта может происходить по упрощённой схеме, как например делает Slack с его регистрационными ссылками. Чтобы зарегистрироваться не обязательно вводить пароль. --- Добавлено --- Также отписка от рассылки может происходить по ссылке с неким хешем. Не обязательно проходить аутентификацию по логину и паролю, достаточно чтобы хеш прошел проверку, это будет аутентификация в пределах ограниченной области. Ну и само подтверждение действия не должно происходить по get-запросу.