服务器是用node.js / express编写的,将共享下面的代码。
我的目标是将用户身份验证到ios应用程序中,例如,让用户看到UI
在IOS / Swift方面,用户输入电子邮件和密码
import UIKit
import Alamofire
class LoginViewController: UIViewController {
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBAction func loginButton(sender: AnyObject) {
let parameters = [
"email": emailField.text!,
"password": passwordField.text!
]
// What exactly I have to write to authenticate the user??
Alamofire.request(.POST, "https://genietesting.herokuapp.com/auth/login", parameters: parameters, encoding: .JSON)
}
}
如果用户成功,则将根据服务器提供的令牌重定向到包含用户数据的新屏幕。
node.js /表示用于登录的示例代码
app.post('/auth/login', function(req, res) {
User.findOne({ email: req.body.email }, '+password', function(err, user) {
if (!user) {
return res.status(401).send({ message: 'Invalid email and/or password' });
}
user.comparePassword(req.body.password, function(err, isMatch) {
if (!isMatch) {
return res.status(401).send({ message: 'Invalid email and/or password' });
}
res.send({ token: createJWT(user)});
});
});
});
上面的代码只是简单地找到mongodb数据库中的用户,如果它不存在,只需发送带有消息的401,如果找到,则比较密码是否正确,如果它是正确的,那么将令牌发送回客户端。
我理解服务器部分,但是在IOS / Swift部分我究竟要编写什么来用服务器给出的令牌来验证用户?
答案 0 :(得分:1)
基本上你应该检查服务器为你的请求提供的响应。我认为以下代码会有所帮助:
Alamofire.request(.POST, "https://genietesting.herokuapp.com/auth/login", parameters: parameters, encoding: .JSON)
.responseString { response in
print("Success: \(response.result.isSuccess)")
print("Response String: \(response.result.value)")
if let httpError = response.result.error {
let statusCode = httpError.code
// show the error message to user
} else { //no errors
let statusCode = (response.response?.statusCode)!
// proceed to the next page
}
}