我如何使用Alamofire进行基于令牌的authentication?

服务器是用node.js / express写的,会共享下面的代码。

我的目标是将用户身份validation到iOS应用程序中,例如让用户看到用户界面

在这里输入图像描述

在IOS / Swift端,用户input电子邮件和密码

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) } } 

如果用户成功,那么将根据服务器给出的令牌redirect到具有用户数据的新屏幕。

用于login的node.js / express示例代码

 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数据库中find用户,如果不存在,只需发一个附有消息的401,如果find则比较密码是否正确,如果是正确的将令牌发送回客户端。

我理解服务器部分,但在IOS / Swift部分,我必须写什么来用服务器给出的令牌来validation用户身份?

基本上你应该检查服务器为你的请求提供的响应。 我认为下面的代码将有所帮助:

 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 } }