为angular $ http.post提供身份验证凭据

时间:2014-11-28 09:23:12

标签: django angularjs http

我正在为我的API使用django-rest-framework。为了将数据发布到我的API,用户必须首先使用他的凭据登录。

在命令行发布中看起来像这样:

curl -X POST http://127.0.0.1:8000/snippets/ -d "code=print 789" -u username:password

{"id": 5, "owner": "tom", "title": "foo", "code": "print 789", "linenos": false, "language": "python", "style": "friendly"}

现在,我正在尝试使用angularjs发布数据。这是代码:

$http.post('http://localhost:8000/snippets/', self.newSnippet)
     .then(fetchSnippets())
     .then(function (response) {
          self.newSnippet = {};
     })

当然,它不允许我发布这些数据,因为我没有登录。

问题:

如何使用此$ http.post发送用户凭据,就像我在命令行中使用curl一样(-u用户名:密码)?

1 个答案:

答案 0 :(得分:0)

如果是HTTP基本身份验证,请在请求之前输入:

encodedCredentials = Base64.encode('username' + ':' + 'password');
$http.defaults.headers.common['Authorization'] = 'Basic ' + encodedCredentials;

您还需要实现Base64或从某些lib获取它。