如何使用jQuery和Ajax对DreamFactory进行基本身份验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用jQuery和Ajax对DreamFactory进行基本身份验证相关的知识,希望对你有一定的参考价值。

我正在尝试通过对DreamFactory的ajax请求进行基本身份验证,以获取SESSION_TOKEN(或JWT)。但是以下代码失败。 DreamFactory社区论坛似乎已过时,无法在此处发布我的问题。任何人都知道如何通过对DreamFactory的基本身份验证来进行正确的Ajax调用?

$.ajax({ 
    url: 'https://<dreamfactory-server>/api/v2/user/session';
    async: true,
    type:'POST',
    dataType: 'json',
    contentType: 'application/json; charset=UTF-8',
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Basic " + btoa('hhmeier@blabla.com'+':'+'secret'));
    },
    success: function(response){
        console.log("hello success");
    },
    error: function(err) {
        console.log("hello error " + err.responseText);
    }
});

执行此代码显示此错误消息。

{“错误”:{“代码”:400,“上下文”:空,“消息”:“登录请求缺少必需的电子邮件。”,“状态码”:400}}]

似乎登录名需要用于登录的电子邮件地址。因此,尝试使用curl命令,并在正文中使用JSON格式的电子邮件和密码。此调用有效,它返回一个SESSION_TOKEN,可通过DreamFactory(仅将http用于测试,以后使用https)在进一步的api调用中起作用。

curl -i -k -3 -X POST "http://<dreamfactory-server>/api/v2/user/session" -d '{ "email" : "hhmeier@blabla.com", "password" : "secret" }' -H "Content-Type: application/json"

使用基本身份验证执行curl命令,由于上面的相同错误,它失败。

curl -i -k -3 -X POST "http://<dreamfactory-server>/api/v2/user/session" --user hhmeier@blabla.com:secret -H "Content-Type: application/json"

尽管DreamFactory手册描述了基本身份验证有效,但我无法使其正常工作。除非使用该curl命令。有什么想法吗?

答案

curl命令失败的原因是您需要使用HTTPS。根据DreamFactory文档。

curl https://jdoe%40dreamfactory.com:secret@foo.com/api/v2/db/_table

此外,在您的Ajax调用中,您需要进行GET调用以获取端点。

$.ajax({ 
    url: url,
    async: true,
    type:'GET',
    dataType: 'json',
    contentType: 'application/json',
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Basic "+btoa(username+':'+password));
    },
    success: function(json){
        ...
    },
    error: function(err) {
        ...
    }
});

[以供​​进一步参考,请参阅本文-http://wiki.dreamfactory.com/DreamFactory/Tutorials/Basic_Auth

谢谢

以上是关于如何使用jQuery和Ajax对DreamFactory进行基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jQuery和Ajax对DreamFactory进行基本身份验证

如何使用 jquery/ajax 对已经从数据库中获取的数据进行排序?

如何使用 Ajax、PHP 和 JQuery 检查多个输入复选框?

如何使用 jQuery ajax() 方法异步提交 验证用户登录

如何使用简单的ajax jQuery对DialogFlow V2进行http调用?

使用 Jquery、AJAX 和 PHP 从 MySQL 数据库中检索数据