我使用Python/Django和出色的Django REST框架創建了一個REST Web API。對AJAX網絡應用使用REST令牌認證的好主意?
我正在嘗試使用身份驗證方法,並想知道是否對AJAX Web應用程序使用「令牌身份驗證」是一種很好的做法。
我在一個非常基本的CRUD web應用程序中包含了一個示例HTML文件,演示了我目前如何使用令牌身份驗證。它工作正常,但它確實沒問題(關於安全性等)只在源代碼中包含身份驗證令牌?基本認證似乎是一個很好的選擇,但是我必須在源代碼中包含用戶名和密碼,這對我來說似乎更糟?
腳註:我知道REST通過HTTPS協議更好地用於安全性,但我在開發機器上運行此代碼,顯然。我正計劃在生產中使用HTTPS。
在此先感謝您的任何提示!
親切的問候, 克里斯托夫
{% extends 'base.html' %}
{% block title %}Games{% endblock %}
{% block content %}<script type="text/javascript">/*<![CDATA[*/
function getBase() {
return 'http://api.sandbox.dev:8080/';
}
function getData() {
return {
id: $('#id').val(),
title: $('#title').val(),
};
}
function getToken() {
return 'b26ffd6ddb66428ce9164d606f694cd4184ce73e';
}
$(document).ready(function(){
$('#create').click(function(e){
$.ajax({
url: getBase() + 'games/',
type: 'POST',
data: getData(),
dataType: 'json',
headers: {
authorization: 'token ' + getToken(),
},
complete: function(xhr, textStatus) {
console.log('textStatus = ' + textStatus);
},
success: function(data, textStatus, xhr) {
console.log('textStatus = ' + textStatus);
},
error: function(xhr, textStatus, errorThrown) {
console.log('textStatus = ' + textStatus + '\nerrorThrown = ' + errorThrown);
},
});
});
$('#update').click(function(e){
if(getData().id) {
$.ajax({
url: getBase() + 'games/' + getData().id + '/',
type: 'PUT',
data: getData(),
dataType: 'json',
headers: {
authorization: 'token ' + getToken(),
},
complete: function(xhr, textStatus) {
console.log('textStatus = ' + textStatus);
},
success: function(data, textStatus, xhr) {
console.log('textStatus = ' + textStatus);
},
error: function(xhr, textStatus, errorThrown) {
console.log('textStatus = ' + textStatus + '\nerrorThrown = ' + errorThrown);
},
});
}
});
$('#delete').click(function(e){
if(getData().id) {
$.ajax({
url: getBase() + 'games/' + getData().id + '/',
type: 'DELETE',
data: {},
dataType: 'json',
headers: {
authorization: 'token ' + getToken(),
},
complete: function(xhr, textStatus) {
console.log('textStatus = ' + textStatus);
},
success: function(data, textStatus, xhr) {
console.log('textStatus = ' + textStatus);
},
error: function(xhr, textStatus, errorThrown) {
console.log('textStatus = ' + textStatus + '\nerrorThrown = ' + errorThrown);
},
});
}
});
});
/*]]>*/</script><form action="" method="post" onsubmit="return false">
<dl>
<dt><label for="id">ID</label></dt>
<dd><input type="text" id="id" name="id" size="20" maxlength="10" /></dd>
<dt><label for="title">Title</label></dt>
<dd><input type="text" id="title" name="title" size="20" maxlength="20" /></dd>
</dl>
<p><button type="button" id="create">Create</button></p>
<p><button type="button" id="update">Update</button></p>
<p><button type="button" id="delete">Delete </button></p>
</form>{% endblock %}
確定 - 因爲可瀏覽的REST API也使用會話驗證,所以非常有意義。感謝您的確認! :-) – Braek