看板 KnucklesNote
作者 標題 [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 updateCocoaPods 的使用方法可參考: [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)
}
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.get("myString")
// Bool
keychain.getBool("myBoolean")
// Object
keychain.getData("myObject")
要清除資料時使用
// 刪除某一筆資料
keychain.delete("savedPassword")
// 清空所有資料
keychain.clear()
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
回列表(←)
分享