2016-11-29 3 views
0

Im 'разработка приложения с ионной/кордовой и использовали localStorage много раз. Например, у меня есть такая вещь:localStorage же имя индекса в другом приложении

window.localStorage['is_user_paid'] = 1; 

Таким образом, если пользователь платить деньги, я поставил этот localStorage пункт.

Теперь, если еще одно приложение установить это значение в 1, и запустить его в устройстве, действительно ли мое приложение предполагает, что пользователь действительно заплатил? Нужно ли использовать ключ приложения, например 2afjx8y_is_user_paid? Есть идеи?

ответ

1

При работе под Cordova localStorage изолирован от приложения; никакие другие приложения не могут видеть содержимое в вашем приложении localStorage, а также не могут изменять содержимое. Аналогично, ваше приложение может видеть только его содержимое localStorage.

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

Примечание: есть способы обойти это, когда приложения из одной и тех же компаний должны обмениваться данными, но они связаны с другим механизмом хранения)

1

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

код достаточно предсказуем, логика, что важно:

  • Создайте значение в хранилище данных (или файл, который не доступен для чтения через URL, как и в GAE, что может быть приложением .yaml-файл или что-то еще), которые вы используете как уникальный идентификатор. Вы можете сделать это вручную, если вам нужно. Создайте GUID своего рода и просто сохраните его. Не помещайте его в код разработчика или не перекодируйте его на страницу JS, убедитесь, что он выключен вбок (если вам все равно, но вы, вероятно, должны).
  • Всякий раз, когда вы получаете доступ к локальному хранилищу, чтобы получить или поместить его, запустите его через функцию, которая извлекает эту информацию (или уже извлекла ее как часть самозагрузки приложения, независимо от того, что работает для вашего контекста), и просто добавьте его к тому, что вы «Назовем ваш ключ.

Таким образом, вы можете продолжать кодирование, как если бы вы просто с помощью легко понять ключ, как «user_name», но сохраненная/извлекаться ключ будет выглядеть как «abd12342Baa345324w3423sdfs323DD_user_name».

Время от времени, если вы так склонны, вы можете изменить этот ключ, настроить свой код таким образом, чтобы, если он извлекает «имя пользователя» со старым ключом, вы заменяете его на новый и продолжаете выполнять операции как обычно ,

Я сделал это на работе для приложения в производстве, и все вокруг было признано законным путем. Я получил подход к статье GAE, в которой показано, как хранить и извлекать токены клиентов для входа в Google, не помещая их в свой код; вы даже можете хранить разные версии этого UID для dev/qa/prod и все остальное. Это не относится к GAE, концепция должна охватывать любую среду.

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

+0

Спасибо так много.. Но ответ Керри более подходит для кордовы. Вы правы, когда работаете в браузере (веб-приложение). Наконец, я тестировал в реальном устройстве, и я предупредил о том же индексе 'localStorage'. Он предупредил 'undefined' –

Смежные вопросы