作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用 Alamofire 在 IOS/Swift 端执行 HTTP 方法,而在服务器端我使用 node.js/Express 使用基于 token 的身份验证。
场景是这样的,用户点击登录,然后它会使用 Alamofire 调用/auth/login
url 来执行逻辑,然后服务器将用 token 响应,然后它将用户导航到主屏幕。一切顺利。
我使用钥匙串(keychain)来存储 token 。 https://github.com/kishikawakatsumi/KeychainAccess
Alamofire.request(.POST, "https://specialapp.herokuapp.com/auth/login", parameters: parameters, encoding: .JSON)
.responseJSON { response in
if let httpError = response.result.error {
let statusCode = httpError.code
print(statusCode)
} else {
if let value = response.result.value {
let json = JSON(value)
let statusCode = (response.response?.statusCode)!
if statusCode == 401 {
print(json)
} else {
print(json["token"])
let token = json["token"]
self.keychain["token"] = String(token)
self.performSegueWithIdentifier("Main", sender: sender)
}
}
}
}
但真正的问题在于我关闭应用程序,然后再次重新打开它。我想要实现的是每当用户登录时,关闭应用程序并再次重新打开它将使用户返回主屏幕。
我将如何实现?
最佳答案
在 viewdidload 方法中,您可以像这样检查您的 token 。如果未设置,则表示仍未完成登录。
if let token = NSUserDefaults.standardUserDefaults().valueForKey(KToken) as? NSString {
// Token stored in NSUserDefaults.
} else {
// Have to login
}
然后像这样在 NSUserDefault 中存储值。
NSUserDefaults.standardUserDefaults().setValue(email, forKey: KToken)
NSUserDefaults.standardUserDefaults().synchronize()
关于ios - 我如何在 IOS/Swift 上保留登录 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313358/
我是一名优秀的程序员,十分优秀!