我试图通过ajax请求对DreamFactory进行基本身份验证,以获得一个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,“上下文”:null,“消息”:“登录请求缺少必需的电子邮件。”,“status_code”:400}
登录似乎需要一个电子邮件地址来登录。因此,可以使用curl命令,并在正文中使用JSON格式的电子邮件和密码。这个调用工作,它返回一个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手册描述了基本身份验证的工作原理,但我无法使它工作。除了这个卷曲命令。有什么想法吗?
发布于 2020-04-28 20:10:11
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
谢谢
https://stackoverflow.com/questions/58994886
复制相似问题