No Description

UserInfoStore.swift 2.0KB

    // // UserSessionStore.swift // PaiaiDataKit // // Created by ffib on 2018/12/20. // Copyright © 2018 yb. All rights reserved. // import Foundation fileprivate extension UserDefaults { struct Account: BoolUserDefaultable, DictionaryUserDefaultable { enum DictionaryDefaultKey: String { case userInfo } enum BoolDefaultKey: String { case isLogin case isAudit } } } final class UserSessionStore { #warning("是否加密存储userId") func save(_ userInfo: UserInfo) { UserDefaults.Account.set(true, forKey: .isLogin) UserDefaults.Account.set(userInfo.toJSON(), forKey: .userInfo) } func delete() { UserDefaults.Account.set([:], forKey: .userInfo) UserDefaults.Account.set(false, forKey: .isLogin) } func load() -> UserInfo { let json = UserDefaults.Account.dictionary(forKey: .userInfo) return UserInfo(json: json as [String: AnyObject]) } func getUUID() -> String { let keyChainDic = NSMutableDictionary() keyChainDic.setObject(String(kSecClassGenericPassword), forKey: kSecClass as! NSCopying) keyChainDic.setObject("uuid", forKey: kSecAttrAccount as! NSCopying) keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnAttributes as! NSCopying) keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnData as! NSCopying) var result: AnyObject? var uuid: String? = nil SecItemCopyMatching(keyChainDic, &result) if let resultDic = result as? NSDictionary { if let data = resultDic.object(forKey: kSecValueData) as? Data { uuid = NSString(data: data, encoding: String.Encoding.ascii.rawValue) as String? } } if let uuid = uuid { return uuid } let uuidStr = UUID().uuidString let data = uuidStr.data(using: .ascii) keyChainDic.setObject(data!, forKey: kSecValueData as! NSCopying) SecItemAdd(keyChainDic, nil) return uuidStr } }