如何在 Django Rest Framework 中使用 JWT 令牌?

How can I use JWT tokens in Django Rest Framework?

我是 django 和 DRF 的新手,我正在尝试使用 JWT 构建一个身份验证系统,我想在注册后直接登录用户,我阅读了文档并设法手动创建了一个令牌 return 它在我的序列化程序中,但我的问题是:

1) 如何使用此令牌查看用户是否已登录?

2) 我可以在模板中使用 {% if user.is_authenticated %} 吗?如果是怎么办?

3) 如何在另一个视图中获取用户登录信息?

4) 是否有更有效的方法来处理 DRF 的身份验证?

1- 基本上,当您使用 DRF 和 jwt 令牌时,意味着您正在使用 token-based 身份验证,因此您的所有请求都应包含 Authorization: basic <token value> 的 http header。所以 django drf 身份验证后端将识别此令牌,如果有效,用户将通过身份验证。

2- 我认为您不能再使用该模板标签了。因为那是基于 session 的身份验证。

3- 如果您提供支持该令牌的身份验证并在 header 中发送令牌,每个视图都应在 request.user

中包含用户信息

4- 我认为最好的解决方案之一是 token-based 使用 jwt 令牌。

DRF Auth and Permissions 有很多关于在 DRF 中使用身份验证和权限的有用信息,请查看。

补充@Reza-Torkaman-Ahmadi 所说的内容:

在您的视图中,您可以使用权限来确保用户已通过身份验证:

permission_classes = (permissions.IsAuthenticatedOrReadOnly,)