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

时间:2019-01-26 13:34:07

标签: django django-rest-framework django-rest-framework-jwt

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

1-基本上,当您使用DRF和jwt令牌时,意味着您在使用基于令牌的身份验证,因此所有请求都应包含Authorization: basic <token value>的http标头。因此,django drf身份验证后端将识别此令牌,并且如果有效,则将对用户进行身份验证。

2-我认为您不能再使用该templatetag。因为这是基于会话的身份验证。

3-如果您提供该令牌支持的身份验证并在标头中发送令牌,则每个视图的request.user中都应包含用户信息

4-我认为最好的解决方案之一是基于令牌的jwt令牌。

答案 1 :(得分:0)

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

加上@ Reza-Torkaman-Ahmadi所说的话:

在您的视图中,您可以使用权限来确保对用户进行身份验证:

permission_classes = (permissions.IsAuthenticatedOrReadOnly,)