当前位置: 首页 > 面试题库 >

如何查询经过身份验证的Django应用程序?

田佐
2023-03-14
问题内容

我想使用cURL测试一些API。我尝试执行GET,如下所示:

curl --user username:password --request GET http://my_domain/get_result/52d6428f3ea9a008358ad2d8/

在服务器上,它显示为“ 302”(表示重定向,对吧?)。我猜它重定向到“登录/”页面。

完成这项工作的正确方法是什么?

编辑:我试过:

curl -c cookies.txt -b cookies.txt -L -d @login_form.txt http://my_domain/login/

其中login_form.txt包含“ username = username&password = password&this_is_the_login_form = 1”。不起作用 没有生成cookies.txt文件。而且没有登录发生。你能告诉我如何使用cURL实现登录Django吗?


问题答案:

这是一个完整的编码答案。解决方案的想法是:

  1. 你必须先使用GET访问登录页面,以生成Cookie文件,
  2. 然后从cookie文件中解析CSRF令牌
  3. 并使用POST请求进行登录,并通过传递数据-d
    之后,你可以始终使用数据($DJANGO_TOKEN)中的CSRF令牌或自定义X-CSRFToken标头执行任何请求。要注销,只需删除cookie文件。

请注意,你需要一个Referer(-e)才能使Django的CSRF检查满意。

LOGIN_URL=https://yourdjangowebsite.com/login/
YOUR_USER='username'
YOUR_PASS='password'
COOKIES=cookies.txt
CURL_BIN="curl -s -c $COOKIES -b $COOKIES -e $LOGIN_URL"

echo -n "Django Auth: get csrftoken ..."
$CURL_BIN $LOGIN_URL > /dev/null
DJANGO_TOKEN="csrfmiddlewaretoken=$(grep csrftoken $COOKIES | sed 's/^.*csrftoken\s*//')"

echo -n " perform login ..."
$CURL_BIN \
    -d "$DJANGO_TOKEN&username=$YOUR_USER&password=$YOUR_PASS" \
    -X POST $LOGIN_URL

echo -n " do something while logged in ..."
$CURL_BIN \
    -d "$DJANGO_TOKEN&..." \
    -X POST https://yourdjangowebsite.com/whatever/

echo " logout"
rm $COOKIES


 类似资料:
  • 我正在尝试使用Facebook凭据实现网站登录。当我在Facebook小部件上按“取消”或“确定”时,我会看到不同的反应。当我按Cancel时,我看到以下内容 这是可预测的。但是当我按OK时,我看到另一个错误。 我在本地运行的网站Ubuntu 14.04 apache Web服务器与80端口。我怀疑错误的Facebook应用程序设置,但不知道调试什么。 此外,我可以提到推特登录也在相同的设置下工作

  • 我使用CouchDB来存储来自不同来源的数据,使用CouchDB lucene来允许临时查询。这对我来说很重要,因为我在一个提要中显示数据,我希望这个提要是可过滤的。CL似乎是完美的选择。 不过,我还想为feed应用程序引入权限——用户只有在拥有查看权限的情况下才能查看feed项目。 现在,我希望能够运行特别查询,并且只返回当前经过身份验证的用户有权读取的提要项。 我能找到的唯一解决方案(到目前为

  • 我想使用boto3获取访问AWS服务的临时凭据。用例是这样的:我的Cognito用户池中的一个用户登录到我的服务器,我希望服务器代码为该用户提供访问其他AWS服务的临时凭据。 我有一个Cognito用户池,其中存储了我的用户。我有一个Cognito标识池,它不允许未经授权的访问,只允许来自Cognito用户池的用户访问。 下面是我开始的代码: 但是,仅运行这三行代码就会引发异常: 由于我的Cogn

  • 我的代码在这里:代码重新发布是因为我想问一个更直接的问题。如何在未经身份验证的用户和经过身份验证的用户之间切换?我的未经验证的文件似乎已缓存,我使用了以下方法: 在我剩下的api代码之前,它仍然不能工作。谢谢你的帮助 注意:我知道它不起作用,因为我在切换配置/凭据提供程序后立即使用lambda进行调用,并且只有授权用户才能调用此方法。 编辑@behrooziAWS答案: API代码: 完整错误:B

  • 我正在研究使用JWT身份验证的Spring Security实现。我不确定如何检查用户角色并在方法级别获得经过身份验证的用户。我在网上看到这个例子: 我需要从JWT令牌中提取用户类型吗?还有其他方法可以实现吗?在我看来,仅使用是不完整的。 看起来这段代码是用来获得用户如果使用会话类型,我得到NPE。你知道对于JWT我如何才能成为用户吗? Github完整来源:https://Github.com/

  • 我是Spring安全的新手,我想用数据库验证用户。我已经用jdbc创建了一个登录页面和一个身份验证提供程序,它检查用户是否存在于数据库中。但是我的代码没有这样做的问题是,它允许所有用户登录!我的代码怎么了?谢谢你的帮助。 这是我的安全会议。xml: