Chrome - LocalStorage - хранение значений по всем URL - PullRequest
1 голос
/ 14 марта 2012

Я разрабатываю расширение Chrome, в котором пользователь должен проходить аутентификацию на нашем сервере каждый раз, когда он использует это расширение.Я пытаюсь реализовать функцию «Запомнить меня», когда после ввода пользователем учетных данных расширение будет помнить его навсегда.Проблема, с которой я столкнулся, заключается в том, что Chrome будет связывать учетные данные с текущим веб-сайтом, на котором находится пользователь.

Прямо сейчас, если пользователь вводит свои учетные данные на google.com, система запоминает только их учетные данные.на google.com, а не на wikipedia.org.Я хочу, чтобы их учетные данные запоминались во всех доменах.

Чтобы прочитать учетные данные:

username = localStorage["username"];
password = localStorage["password"];

Чтобы сохранить учетные данные:

localStorage["username"] = username;
localStorage["password"] = password;

Чтобы проверить, существуют ли их учетные данные:

if ( localStorage["username"] != "" ) {...}

1 Ответ

2 голосов
/ 14 марта 2012

В расширении Chrome скрипты содержимого выполняются в том же процессе и в том же домене (например, https://www.google.com), что и веб-страница. При этом все всплывающие окна и фоновая страница расширения запускаются в процессе «расширения» и совместно используют уникальный Происхождение (например, "eakjnniffhfegdpfehmnpcmjiameincp"). Поэтому, когда вы обращаетесь к localStorage["username"] из скрипта контента, вы фактически получаете доступ к localStorage, который принадлежит, например, https://www.google.com.

Таким образом, если вы хотите, чтобы информация передавалась между различными скриптами контента в вашем расширении, вам нужно сохранить свои данные в localStorage на фоновой странице и отправлять на нее сообщения из ваших скриптов контента, вызывая chrome.extension.sendRequest или chrome.extension.connect. Или отправьте сообщение с фоновой страницы в сценарии содержимого, позвонив по номеру chrome.tabs.sendRequest или chrome.tabs.connect.

Кроме того, вам может понадобиться переосмыслить модель данных, которая предполагает, что у пользователя одинаковый пароль на google.com и википедии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...