我有一个构建在 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 token ,这引出了我的问题iOS 应用程序的请求会是什么样子,它会从哪里获得对我的应用程序有效的 csrf token ?
类似下面的问题:
最佳答案
Hackathon Starter 框架看起来像是为基于浏览器的网络应用程序而不是通用的网络 API 请求而设计的。对于您想要做的事情,您需要使用基于 API 的身份验证(基本身份验证是最简单的,this 看起来像是将其添加到 express
的好教程黑客马拉松使用)。
如果您想按原样使用现有框架,则必须在 iOS 端做一些工作。从您提供的链接来看,框架似乎在 HTML <meta>
中传递 CSRF token 。登录页面上的标签:
<meta name="csrf-token" content="9XLjTtpT6jf/HsrXT94GHOeFS4NIgQUTuPpfw=">
在您的 iOS 应用程序中,您必须首先向登录页面发出请求,从 meta
中抓取 CSRF token 。标记,并在使用 _csrf
发出 POST 请求时使用它变量。
不幸的是,我不熟悉 iOS 以及您将如何编写请求代码,但最终结果将类似于您上面的 jQuery 示例产生的结果。
关于javascript - 在 iOS 和 Node.js 应用程序之间传递登录凭据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356231/