在iOS和Node.js应用程序之间传递登录凭据的最佳方式

时间:2015-05-20 17:13:53

标签: javascript ios node.js csrf

我有一个构建在hackathon starter framework之上的node.js应用程序(人们可以在http://hackathonstarter.herokuapp.com/进行演示)。

我想设置一个人可以登录iOS应用程序并使用Web应用程序数据库。

当我登录到应用程序时,请求正文包含以下内容,然后用于对用户进行身份验证。

body:
   { _csrf: 'a2OrandomxnpwVOrandomp0u36randomorlv0=',
     email: 'myEmail@gmail.com',
     password: 'myPassword' },

我尝试使用以下格式在网站的控制台中发出ajax请求,并且它成功验证了我:

$.ajax({
    type:"POST",
    url:"/login",
    data:   { _csrf: 'a2OrandomxnpwVOrandomp0u36randomorlv0=',
     email: 'myEmail@gmail.com',
     password: 'myPassword' },
    dataType:"json",
    success:function(response){
        console.log(response)
    }
}); 

由此我得出结论(希望正确),为了接受来自外部应用程序的请求,请求必须包含有效的_csrf令牌,这会引出我的问题 iOS应用程序的请求会是什么样子,它会在哪里获得对我的应用程序有效的csrf令牌?

问题类似于以下内容:

How to get CSRF token in iOS?

1 个答案:

答案 0 :(得分:1)

Hackathon Starter 框架看起来像是为基于浏览器的Web应用程序而非通用Web API请求而设计的。对于您要执行的操作,您需要使用基于API的身份验证(基本身份验证是最简单的,this看起来像是一个很好的教程,可以将其添加到 express < / strong> Hackathon使用的。)

如果您想按原样使用现有框架,则必须在iOS方面做一些工作。从您提供的链接看,框架似乎在登录页面上的HTML <meta>标记中传递CSRF令牌:

<meta name="csrf-token" content="9XLjTtpT6jf/HsrXT94GHOeFS4NIgQUTuPpfw=">

在您的iOS应用程序中,您必须首先向登录页面发出请求,从meta标记中抓取CSRF令牌,并在使用_csrf发出POST请求时使用该令牌变量

不幸的是,我不熟悉iOS以及如何为请求编写代码,但最终结果与上面的jQuery示例相似。