我正在开发一个Django(1.10)项目,现在正在使用Django Rest Framework为我的项目创建一个rest API。我已经设置了JWT令牌,现在我想为用户提供一个模板,他可以在那里生成一个令牌。 以下是身份验证令牌的网址:
url(r'^api-token-auth/', obtain_jwt_token)
我想从一个视图发送一个帖子请求到一个视图,该视图加载生成一个令牌,但它需要用户的username
和password
。
如何通过当前用户的username
和password
?
以下是我的观点:
class GetApiAuthToken(LoginRequiredMixin, CreateView):
def get(self, request, *args, **kwargs):
return render(request, 'dockerDep/getApiAuthToken.html', {})
def post(self, request, *args, **kwargs):
if request.method == 'POST':
post_data = request.POST.copy()
post_data.update({'user': request.user.pk})
payload = {'username': request.user.username, 'password': request.user.password}
r = requests.post('http://127.0.0.1:8000/api-token-auth/', params=payload)
return HttpResponse('Get token auth request and data is as: {}'.format(r.text))
这是用户可以点击按钮生成令牌的模板:
<div class="col-md-9 content">
<div class="world-map" style="width: 100%; margin-left:2%">
<h3> Get your Authorization Token to use REST Api :</h3>
</div>
<div class="col-lg-6" style="margin-top: 20%; margin-left: 25%;"><br>
<form action="{% url 'users:getApiAuthToken' %}" method="post" id="getTokenForm">
{% csrf_token %}
<a href="" style="text-decoration: none; color: white;">
<button type="submit" class="btn waves-effect waves-light pull-right" value="Submit" id="enableApi" style="padding-right: 10%; font-size: 20px;"><i
class="material-icons left">casino</i> Generate Api Token!</button></a>
</form>
</div>
</div>
这里我正在向视图发送一个AJAX POST reuqest:
$(document).on('submit', '#getTokenForm', function (e) {
e.preventDefault();
$.ajax({
url: '{% url 'users:getApiAuthToken' %}',
type: 'POST',
data: {
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
},
success: function (data) {
console.log(data);
}
});
});
如何传递用户的凭据?或者是否有更好的方法允许用户生成令牌?