0

我使用 DRF 和 Knox 创建了一个 API,并且我正在使用基于令牌的身份验证。一切正常,除了系统将登录用户显示为匿名用户。

我尝试了所有这些:

            current_user = request.user
            print(current_user.is_anonymous) # True
            print(current_user.is_authenticated) # False
            print(current_user.is_staff) # False
            print(current_user.is_superuser) # false
            print(current_user.is_active) # false

            u = User()
            print(u.id) # None

我需要登录用户的用户 ID,因为我将其用作另一个表中的外键。我检查了 auth_user 表,它包含所有列。有什么方法可以获取用户 ID 或将匿名用户转换为经过身份验证的用户?

谢谢阿杰

4

1 回答 1

1
from knox.auth import TokenAuthentication
token = request.META.get('HTTP_AUTHORIZATION', False)
if token:
    token = str(token).split()[1].encode("utf-8")
    knoxAuth = TokenAuthentication()
    user, auth_token = knoxAuth.authenticate_credentials(token)
    request.user = user
于 2021-07-25T21:46:55.010 回答