首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Django REST JWT登录

使用Django REST JWT登录
EN

Stack Overflow用户
提问于 2018-08-27 01:12:01
回答 1查看 1K关注 0票数 0

我有两个应用程序的Django项目。第一个应用程序是基于默认Django身份验证机制的简单登录/注册应用程序。它有两个表单,成功登录或注册后,将被重定向到我的第二个应用程序。所以,我的第二个应用是基于Vue.js的单页面应用。

我还使用了djangorestframework和djangorestframework-jwt包。

我知道JWT是如何工作的,但是我不知道如何在我的项目中实现它。例如,在我的视图中,这是在来自登录表单的POST请求之后执行的代码的一部分:

代码语言:javascript
复制
...
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, email=username, password=password)
if user is not None:
    login(request, user)
    return redirect('spa')
...

所以,我有了下一个问题:

成功登录后(重定向之前)如何创建令牌并将与response

  • djangorestframework-jwt一起发送
  1. 提供要包含在urls中的视图

从rest_framework_jwt.views导入obtain_jwt_token、refresh_jwt_token、verify_jwt_token

那么,我应该在哪里调用obtain_jwt_token呢?在SPA中成功登录后-

  • 为了使用JWT,我是否应该为用户模型创建序列化程序?

  • 是否可以在没有RESTful支持的情况下使用*rest-jwt?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 06:04:12

开始你的第四个问题:

在没有RESTful支持的情况下使用*rest-jwt正确吗?

Rest JWT是一种API的身份验证方法,所以将它与Django默认身份验证混合使用有点误用,我认为这就是为什么您在这个问题上遇到困惑的原因。您应该使用rest-jwt方法作为独立的身份验证过程,而不是与内置的Django身份验证方法捆绑在一起。

考虑到这一点,我认为最好的方法是将第一个应用程序中的登录/注册功能整合到Vue应用程序中。然后,Vue应用程序中的auth方法可以从您的Django服务器访问API路由。

下面简要介绍一下它是如何工作的:

myapp/urls.py

代码语言:javascript
复制
from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token
urlpatterns = [
    url('auth/token$', obtain_jwt_token),
    url('auth/token/refresh', refresh_jwt_token,
    url('auth/token/verify', verify_jwt_token)
]

然后,在Vue中,您的登录功能可以使用用户的凭证向[host]/auth/token发出POST请求,以接收JWT。参考DRF JWT文档:https://jpadilla.github.io/django-rest-framework-jwt/#usage

这样,您就不必担心重定向和更改身份验证过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52028525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档