使用Django REST JWT登录
我有一个带有两个应用程序的Django项目。第一个应用程序是基于默认Django身份验证机制的简单登录/注册应用程序。它有两个表单,成功登录或注册后将重定向到我的第二个应用程序。因此,我的第二个应用程序是基于Vue.js的单页应用程序 我还使用了djangorestframework和djangorestframework jwt包 我了解JWT是如何工作的,但我不知道如何在我的项目中实现它。 例如,这是在我的视图中登录表单发出POST请求后执行的代码的一部分:使用Django REST JWT登录,django,django-rest-framework,single-page-application,django-rest-framework-jwt,Django,Django Rest Framework,Single Page Application,Django Rest Framework Jwt,我有一个带有两个应用程序的Django项目。第一个应用程序是基于默认Django身份验证机制的简单登录/注册应用程序。它有两个表单,成功登录或注册后将重定向到我的第二个应用程序。因此,我的第二个应用程序是基于Vue.js的单页应用程序 我还使用了djangorestframework和djangorestframework jwt包 我了解JWT是如何工作的,但我不知道如何在我的项目中实现它。 例如,这是在我的视图中登录表单发出POST请求后执行的代码的一部分: ... username = r
...
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')
...
所以,我有接下来的问题:
from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token
那么,我应该在哪里调用获取jwt令牌?成功登录后是否在SPA中开始你的第四个问题: 在没有RESTful支持的情况下使用*RESTJWT正确吗 RESTJWT是API的一种身份验证方法,因此将其与Django default auth混合使用有点误用,我认为这就是为什么您在这个问题上会遇到困惑。您应该将rest jwt方法用作独立的身份验证过程,而不是与内置的Django身份验证方法捆绑在一起 考虑到这一点,我认为最好的方法是将第一个应用程序中的登录/注册功能合并到Vue应用程序中。然后Vue应用程序中的auth方法可以从Django服务器访问API路由 下面简要介绍一下这是如何工作的: 在
myapp/url.py
中:
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文件:
这样,您就不必担心重定向和更改身份验证进程