我是 django 和 DRF 的新手,我正在尝试使用 JWT 构建一个身份验证系统,我想在注册后直接登录用户,我阅读了文档,我设法手动创建了一个令牌并在我的序列化程序中返回它,但我的问题是这样的:
1)如何使用此令牌查看用户是否登录?
2) 我可以在模板中使用 {% if user.is_authenticated %} 吗?如果是这样怎么办?
3)如何在另一个视图中获取用户登录信息?
4) 有没有更有效的方法来处理 DRF 的身份验证?
我是 django 和 DRF 的新手,我正在尝试使用 JWT 构建一个身份验证系统,我想在注册后直接登录用户,我阅读了文档,我设法手动创建了一个令牌并在我的序列化程序中返回它,但我的问题是这样的:
1)如何使用此令牌查看用户是否登录?
2) 我可以在模板中使用 {% if user.is_authenticated %} 吗?如果是这样怎么办?
3)如何在另一个视图中获取用户登录信息?
4) 有没有更有效的方法来处理 DRF 的身份验证?
1-基本上当您使用 DRF 和 jwt 令牌时,意味着您正在使用基于令牌的身份验证,因此您的所有请求都应包含Authorization: basic <token value>
. 所以 django drf 身份验证后端,将识别这个令牌,如果有效,用户将被验证。
2-我认为你不能再使用那个模板标签了。因为那是基于会话的身份验证。
3-如果您提供支持该令牌的身份验证并在标头中发送令牌,则每个视图都应包含用户信息request.user
4- 我认为最好的解决方案之一是基于令牌的 jwt 令牌。
DRF Auth and Permissions有很多关于在 DRF 中使用 auth 和权限的有用信息,请查看。
补充@Reza-Torkaman-Ahmadi 所说的话:
在您的视图中,您可以使用权限来确保用户经过身份验证:
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)