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

标签 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 token ,这引出了我的问题iOS 应用程序的请求会是什么样子,它会从哪里获得对我的应用程序有效的 csrf token ?

类似下面的问题:

How to get CSRF token in iOS?

最佳答案

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/

相关文章:

php - 如何为谷歌地图创建可拖动的自定义标记列表

ios - xcode 10.1 找不到构建阶段选项卡

javascript - Node.js 提取标签之间的 html 元素

javascript - 如何在 Node.js 中将代码拆分为多个文件?

javascript - 数组中大小 N 的组合

iphone - iOS 6 多个 UIWebViews : Javascript only runs in one

ios - Firebase 插件无法在 IOS (Ionic) 上运行

node.js - 部署到heroku时express-rate-limit不起作用

javascript - 如何在 Yeoman web 应用程序中配置 eslint?

javascript - 使用 Safari 隐藏视频文本轨道