gpt4 book ai didi

c++ - 使用 curl 和 C++ 的 Django 身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:18 27 4
gpt4 key购买 nike

我正在尝试创建一个 C++ 应用程序来登录 Django 服务器。我一直在寻找这个,但我还没有找到解决我的具体问题的方法。

我正在使用 libcurl 网站的示例之一来执行请求:

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
CURL *curl;
CURLcode res;

curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/");

/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));

/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

我找到了输入用户名和密码的选项:

curl_easy_setopt(curl, CURLOPT_USERPWD, "luis:123456");

但问题是我不知道 Django 如何识别这个 curl 选项。

其他可能性是完成 Django 提供的用于登录的表单。我使用的表格是:

<html><body>
<form method="post" action="/login">
{% csrf_token %}
{% if form.errors %}
<p class="error">Login error</p>
{% endif %}
<table>
<tr>
<td>Username</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>Password</td>
<td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login" />
</form>

</body>
</html>

使用此选项,我的问题是我不知道如何使用 C++ 和 curl 获取和完成表单。

最佳答案

您需要将带有登录表单数据的 POST 请求发送到登录 URL - 除非 Django 网络应用程序提供不同的登录机制,但通常情况并非如此。

当您发送 POST 数据并且 Django 登录表单处理成功验证用户身份时,您将取回一个 cookie,您将在后续请求中存储和使用该 cookie。

另请注意,登录表单使用 csrf_token 标记,这意味着如果您不发送 csrftoken cookie 和带有请求表单数据的 token ,Django将拒绝该请求。我建议您看一下浏览器在加载和提交登录页面时执行的 HTTP 请求。所有现代浏览器都有很好的调试工具来监控请求。

或者,如果您可以控制 Django 网络应用程序,则可以在登录页面的 View 函数中禁用 CSRF token 验证。

关于c++ - 使用 curl 和 C++ 的 Django 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com