顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [Xcode][Swift3] 使用 Keychain 儲存機密資料
時間 2017-04-29 Sat. 21:33:03


如果想要做保持登入的功能的話,
需要將使用者的帳號密碼儲存起來

但密碼如果使用 UserDefaults 來儲存的話不安全,
可能會在 JB 後被其他的 App 竊取,
安全的做法是使用 Keychain (鑰匙圈) 來儲存

若手機的設定有開啟 iCloud 同步鑰匙圈的話,
儲存在 Keychain 的資料還可以與其他的裝置同步更新

但使用 Keychain 的方法有點麻煩
所以要安裝第三方程式來處理


安裝 KeychainSwift

參考 GitHub https://github.com/marketplacer/keychain-swift

iOS7+ 可以下載 KeychainSwiftDistrib.swift 檔,
放到專案中就可以了

iOS8+ 可以使用 CocoaPods 安裝
在 Podfile 加入
    pod 'KeychainSwift', '~> 8.0'
後,在專案目錄執行 pod update

CocoaPods 的使用方法可參考: [Xcode][Swift3] 安裝套件管理工具 CocoaPods - KnucklesNote板 - Disp BBS


使用 KeychainSwift

檔案前面先加上
import KeychainSwift

要存取字串資料時,使用
    let myPassword = "secret password"
    let keychain = KeychainSwift()
    // 儲存密碼至 keychain
    keychain.set(myPassword, forKey: "savedPassword")

    // 要讀取的時候使用
    if let getPassword = keychain.get("savedPassword") {
        print(getPassword)
    }


使用 keychain.set(_:forKey:) 可以傳入 String, Bool, Object
讀取時分別要使用
    // String
    keychain.get("myString")

    // Bool
    keychain.getBool("myBoolean")

    // Object
    keychain.getData("myObject")


要清除資料時使用
    // 刪除某一筆資料
    keychain.delete("savedPassword")

    // 清空所有資料
    keychain.clear()


要與其他裝置同步資料的話,在使用 set() 與 get() 前執行
    keychain.synchronizable = true




--
※ 作者: Knuckles 時間: 2017-04-29 21:33:03
※ 編輯: Knuckles 時間: 2017-04-29 22:18:54
※ 看板: KnucklesNote 文章推薦值: 1 目前人氣: 0 累積人氣: 1213 
分享網址: 複製 已複製
( ̄︶ ̄)b DarkSoul 說讚!
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇