Верно сохранять/извлекать данные в/из браузера

Рейтинг: 1Ответов: 1Опубликовано: 06.06.2023

Blazor School предлагает различные способы хранения данных, чтоб пользователь мог сохранять информацию (логин, возможные другие настройки...)

скачав проект урока его можно потестировать, но для меня все эти способы как-то схожи. Все сохраняют в браузере, и когда читаешь их документацию, мало, что отличается...(создайте класс, добавьте функции, сохраняет ключ/значение)

Подскажите, какое решение для чего подходит (что-то для логина, что-то для цвета кнопки, а что то для последней сессии например, чтоб показать имя пользователя...), Кто работал на Блазор Веб Ассембли поделитесь опытом

вот мой предыдущий вопрос, сейчас немного больше информации, но все равно необходима помощь профессионала.

Ответы

▲ 1Принят

Для хранения всевозможных персональных настроек используйте бэк-энд приложения.

Гораздо реже, если вы хотите запомнить что-то специфичное для UI, например у вас можно менять ширину сайдбара, то LocalStorage хороший выбор. Важно помнить, что там не должно быть ни какой секретной\полусекретной информации. Хотя бы потому что если зайдёт другой пользователь, он получит доступ к этим настройкам. Но в 99,9% случаев из одного браузера не заходят разные пользователи.

Что ещё реально может пригодится, это MemoryStorage, т.е. то что хранится только пока не сброшена память вкладки браузера. Но не в таком виде, как по вашей ссылке. Там он сделан как подобие LocalStorage, SessionStorage, т.е. глобальная свалка ключ-значение на основе Dictionary<string, string> внутри самого блейзера. Это сделано специально, чтобы показать что если очень надо можно вот так спародировать (*)Storage. Но это мало кому нужно будет на самом деле. Просто создайте синглтон, который будет хранить, то что вам нужно в том виде как вам нужно, и имеет интерфейс такой какой вам нужен.

Куки нужны только тогда, когда имеет смысл шарить что-то с сервером, причём на каждый запрос. Естественно это нужно редко. Ещё реже нужно создавать или читать их на стороне браузера. У меня было приложение на Blazor, где была кука для аутентификации, но Blazor никогда её не трогал, а сервер с её помощью проверял что за пользователь к нему обращается. Ещё это может быть сессионная кука, в том числе для незарегистрированных пользователей, но в моей практике и она создавалась на сервере.

Иногда используют иную схему аутентификации при которой сервер отдаёт токен в браузер явно и принимает через какой-нибудь заголовок запроса. В таком случае это уже дело Blazor где хранить этот токен. Как правило токен зашифрован, а не зашифрованная часть не имеет секретных данных, поэтому его сохраняют в LocalStorage.