我有一个构建在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令牌?
问题类似于以下内容:
答案 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示例相似。