gpt4 book ai didi

python - 如何在 django-rest-framework 中为 API 使用 TokenAuthentication

转载 作者:IT老高 更新时间:2023-10-28 22:00:44 26 4
gpt4 key购买 nike

我有一个django项目,使用django-rest-framework来创建api。

想要使用基于 token 的身份验证系统,因此(放置、发布、删除)的 api 调用只会为授权用户执行。

我安装了“rest_framework.authtoken”并为每个用户创建了 token 。

所以,现在从 django.contrib.auth.backends 进行身份验证,它返回用户,以 auth_token 作为属性。 (登录成功时)。

现在我的问题是如何将带有 post 请求的 token 发送到我的 api 和在 api 端如何验证 token 是否有效并且属于正确的用户?

应用程序 rest_framework.authtoken 中是否有任何方法可以验证给定用户及其 token ?未找到 this很有用!

更新(我所做的更改):在我的 settings.py 中添加了这个:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}

也在我的 header 中发送 token ,但它仍然无法正常工作:

if new_form.is_valid:
payload= {"createNewUser":
{ "users": request.POST["newusers"],
"email": request.POST["newemail"]
}
}

headers = {'content-type' : 'application/json',
'Authorization': 'Token 6b929e47f278068fe6ac8235cda09707a3aa7ba1'}

r = requests.post('http://localhost:8000/api/v1.0/user_list',
data=json.dumps(payload),
headers=headers, verify=False)

最佳答案

"how can I send the token with post request to my api"

来自文档...

对于客户端进行身份验证, token key 应包含在 Authorization HTTP header 中。键应以字符串文字“Token”为前缀,用空格分隔两个字符串。例如:

Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

"at api side how can I verify if token is valid and belongs to the correct user?"

您无需执行任何操作,只需访问 request.user 以返回经过身份验证的用户 - REST 框架将处理对任何不正确的身份验证返回“401 Unauthorized”响应。

关于python - 如何在 django-rest-framework 中为 API 使用 TokenAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560228/

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