如何使用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() 方法异步提交 验证用户登录