ios - 如何在 iOS 中存储 token ?

标签 ios swift iphone

我正在做一个小项目来准备服务器链接,但我正在尝试将 token 保存在 Userdefault 中!我不知道如何编码。

var headers: [String: String]? {
    switch self {
    case .signIn:
        return nil
        
    case .renewalToken:
        guard let token = UserDefaults.standard.set("userID", forKey: "signIn") else{
        return ["Authorization": "Bearer " + token]
        }
    default:
        guard let token = UserDefaults.standard.set(<#T##value: Any?##Any?#>, forKey: <#T##String#>)
        return ["Authorization": "Bearer " + token]
    }
}

这个code可以通过header放在下面的代码中得到,但是不知道token怎么办

   func get(_ api: TargetType) -> DataRequest{
    return AF.request(baseURI + api.path, method: .get, parameters: api.parameters, encoding: JSONEncoding.prettyPrinted, headers: api.headers, interceptor: nil)
}

最佳答案

首先,您不应将敏感信息存储到用户默认值中。我建议你使用钥匙串(keychain)。它非常安全。

有几个库提供了简单易用的钥匙串(keychain)接口(interface)

SwiftyKeychainWrapper 就是其中之一:

https://github.com/jrendel/SwiftKeychainWrapper

更新-

您需要使用以下代码访问用户默认值:

let token = UserDefaults.standard.string(forKey: “keyName”) ?? “”

注意:如果 token 不存在,那么您可以将用户导航到登录屏幕以进行身份​​验证和重新生成 token 。

关于ios - 如何在 iOS 中存储 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62816406/

相关文章:

android - C++ - 具有类函数引用的模板无法在 Android 上编译

ios - 无法将核心数据文件添加到我现有的项目(版本控制问题)...?

ios - 如何在 ios 中处理 AVAudioplayer 中的音量 slider 位置

XCode 7/Cordova 插件/链接问题 : _utf8_nextCharSafeBody undefined symbol

ios - Apple TestFlight 应用程序仅在 TestFlight 应用程序中过期 90 天,而/或在实际设备上过期 90 天吗?

ios - 1 个 View Controller 中的 2 个 tableViews - 错误不断变化

ios - 函数无法正确执行(Swift 3)

iphone - 如何使按钮的文字向左对齐?

ios - Safari 元刷新不适用于我的 iPhone 应用程序

iphone - 将同一对象添加到多个对多关系