Это хорошая идея, чтобы сохранить значение в userDefaults при входе и проверять статус пользователя каждый раз, когда приложение открывается? - PullRequest
0 голосов
/ 26 апреля 2018

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

Ответы [ 5 ]

0 голосов
/ 26 апреля 2018

Если часть данных не является конфиденциальной (например, размер шрифта по умолчанию), сохраните ее в NSUserDefaults .

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

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

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

0 голосов
/ 26 апреля 2018
var isUserLoggedIn: Bool {
    return UserDefaults.standard.value(forKey: "userDetail") != nil
}

var currentUser : [String:Any] {
    set{
        guard let unwrappedKey = newValue else{
            return
        }
        UserDefaults.standard.set(unwrappedKey, forKey: "userDetail")
        UserDefaults.standard.synchronize()
    } get {

        guard let userDict =  UserDefaults.standard.object(forKey:"userDetail") else {
            return nil
        }
        return userDict
    }
}

func removeCurrentUser(){
    if UserDefaults.standard.value(forKey: "userDetail") != nil {
        UserDefaults.standard.removeObject(forKey: "userDetail")
        UserDefaults.standard.synchronize()
    }
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if isUserLoggedIn {
  //etc..
}
return true
}

Теперь вы можете проверять логин пользователя или не использовать свойство isUserLoggedIn.Вы также можете создать класс модели пользователя.

0 голосов
/ 26 апреля 2018

Я бы предпочел связка ключей вместо UserDefaults .

A цепочка для ключей - это зашифрованный контейнер, в котором хранятся пароли для нескольких приложений и безопасных служб.Apple Inc. использует цепочки для ключей в качестве системы управления паролями в Mac OS и iOS.

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

0 голосов
/ 26 апреля 2018

Да, UserDefaults - лучший способ хранить небольшую информацию.Вы можете сохранить свои пользовательские настройки в UserDefaults.

Как правило, в методе didFinishLaunching в AppDelegate вы можете сделать что-то вроде этого:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    if UserDefaults.standard.value(forKey: "userId") != nil {
        /// etc.
    }
return true
}
0 голосов
/ 26 апреля 2018

Да, вы можете сохранить токен доступа или идентификатор пользователя в Userdefaults и проверить, вошел ли пользователь в систему или нет. Он используется для перехода на домашнюю страницу или любой другой, если пользователь уже вошел в систему. Вы можете написать код для навигациив вашем Appdelegate.

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