我正在尝试通过对 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);
}
});
执行此代码会显示此错误消息。
{"error":{"code":400,"context":null,"message":"登录请求缺少所需的电子邮件。","status_code":400}}
似乎登录需要一个用于登录的电子邮件地址。所以尝试使用 curl 命令并在正文中使用 JSON 格式的电子邮件和密码。此调用有效,它返回一个 SESSION_TOKEN,该 SESSION_TOKEN 在通过 DreamFactory 的进一步 api 调用中工作(仅使用 http 进行测试,稍后使用 https)。
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 命令。有任何想法吗?