顯示廣告
隱藏 ✕
看板 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 累積人氣: 1219 
分享網址: 複製 已複製
( ̄︶ ̄)b DarkSoul 說讚!
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇
看板名稱: 確定(Enter) 取消(Esc) 搜尋(Space)
查詢帳號: 確定(Enter) 取消(Esc) 搜尋(Space)
搜尋: m)m文 b)進板 c)未分類 a)作者 /)標題 q)取消?[q]

搜尋 送出(Enter) 取消(Esc)

回覆文章至: f)看板 m)作者信箱 b)兩者皆是 q)取消?[f]
要引用原文嗎? y)引用原文 n)不引用 a)全部回覆 r)複製原文 q)取消?[y]
轉錄本文章於看板: 1)使用連結 2)使用複製 q)取消 ?[1]
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc) 全部(a)

確定要刪除這篇文章?(可按大U救回) 確定(Enter) 取消(Esc)

刪除理由:

確定(Enter) 取消(Esc)
加到這個分類: 確定(Enter) 下一層(→) 回上層(←) 取消(Esc)
你覺得這篇文章: 1)真讚 2)真瞎 q)取消?[1] (再選一次即可收回)
你覺得這篇文章: 1)值得推薦 2)表示反對 3)單純註解 q)取消?[3]
guest
預覽(Enter) 取消(Esc)
上傳圖片
按ctrl+Enter可輸入下一行。
guest
確定要送出? 確定(Enter) 取消(Esc) 繼續(e)
搜尋: 送出(Enter) 取消(Esc)

▏▎▍▌▋▊▉ 請按任意鍵繼續