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

问题描述 投票:0回答:1

我正在尝试通过对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('[email protected]'+':'+'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" : "[email protected]", "password" : "secret" }' -H "Content-Type: application/json"

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

curl -i -k -3 -X POST "http://<dreamfactory-server>/api/v2/user/session" --user [email protected]:secret -H "Content-Type: application/json"

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

jquery ajax basic-authentication dreamfactory
1个回答
0
投票

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

curl https://jdoe%40dreamfactory.com:[email protected]/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

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.