2014-01-10 3 views
1

Когда я проверяю подлинность пользователя, мне нужно сохранить файл userId (первичный ключ) где-то на устройстве, поэтому я могу использовать его позже, чтобы вытащить другую информацию, связанную с такими пользователями, как «getAccounts (userId)».Где хранить учетные данные на iPhone (имя пользователя или userId)?

Я думаю, что могу использовать NSUserDefaults для хранения userId?

Любые рекомендации?

ОБНОВЛЕНИЕ: Я хочу также упомянуть, что userId автоматически генерируется и автоматически увеличивается, например 3,4,5,6,7 и так далее.

+0

Звучит как хорошая идея для меня. – Wez

+0

У вас есть что-то защищенное, что этот метод принимает токен? Таким образом, пользователь не может просто увеличить значение, чтобы получить другую информацию о пользователе? –

+0

Хороший вопрос! В настоящее время нет, я не пропускаю ни одного токена. Я изменю свои методы, чтобы включить токен. –

ответ

2

Сохранение в NSUSerDefault это нормально - но вы не должны держать userId там. Некоторые люди могут манипулировать этими данными, изменять userId и получать контроль над учетной записью someones else.

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

Кроме того, необходимо расширить API, чтобы всегда требовать маркер (или авторизируйтесь, passowrd) для каждой операции - в противном случае это слишком легко взломать функции как «getAccounts (идентификатор пользователя)»

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

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

+0

Точно ..... вы должны избегать сохранения userId, и я предлагаю для простоты вы просто держите (логин, пароль) в цепочке ключей и отправляйте на сервер для каждой операции ..... – Piyuesh

2

NSUserDefaults - это самое простое место для сохранения быстрых бит полезной информации, такой как имя пользователя или различные варианты предпочтений.

Если вы сохраняете пароли, вам необходимо сохранить их в брелках через Keychain Services.

+0

Спасибо! Звучит как хорошая идея! –

+0

Самый простой не всегда лучшая идея :) –

+0

@GrzegorzKrukowski У вас есть предложения ??? –

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