gpt4 book ai didi

django 管理页面和 JWT

转载 作者:行者123 更新时间:2023-12-04 04:39:55 25 4
gpt4 key购买 nike

我们使用 django-rest-framework 和 django-rest-framework-jwt 进行身份验证,它可以在任何地方工作,除了 ip:port/admin/ 的 django 管理页面.那仍然需要用户名和密码。

是否有设置或方法绕过它以识别 JWT?

/admin/页面总是需要使用名称/密码?我认为内置的 token 身份验证可以使用它。

jwt 是 settings.py 文件中唯一设置的身份验证。 session 身份验证不再存在。

最佳答案

问题是 Django 不知道 djangorestframework-jwt,而只知道 djangorestframework 本身。对我有用的解决方案是创建一个利用 djangorestframework-jwt 身份验证的简单中间件

在 settings.py 中:

MIDDLEWARE = [
# others
'myapp.middleware.jwt_auth_middleware',
]

然后在我的 myapp/middleware.py
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from django.contrib.auth.models import AnonymousUser
from rest_framework import exceptions

def jwt_auth_middleware(get_response):
"""Sets the user object from a JWT header"""
def middleware(request):
try:
authenticated = JSONWebTokenAuthentication().authenticate(request)
if authenticated:
request.user = authenticated[0]
else:
request.user = AnonymousUser
except exceptions.AuthenticationFailed as err:
print(err)
request.user = AnonymousUser

response = get_response(request)

return response

return middleware

重要提示:
这是一种不应该在生产中运行的幼稚方法,因此我只启用此中间件 if DEBUG .如果在生产环境中运行,您可能应该像内置的 django.contrib.auth 那样缓存并延迟评估用户。模块。

关于django 管理页面和 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49679059/

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