我有两个应用程序的Django项目。第一个应用程序是基于默认Django身份验证机制的简单登录/注册应用程序。它有两个表单,成功登录或注册后,将被重定向到我的第二个应用程序。所以,我的第二个应用是基于Vue.js的单页面应用。
我还使用了djangorestframework和djangorestframework-jwt包。
我知道JWT是如何工作的,但是我不知道如何在我的项目中实现它。例如,在我的视图中,这是在来自登录表单的POST请求之后执行的代码的一部分:
...
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
从rest_framework_jwt.views导入obtain_jwt_token、refresh_jwt_token、verify_jwt_token
那么,我应该在哪里调用obtain_jwt_token呢?在SPA中成功登录后-
发布于 2018-08-27 06:04:12
开始你的第四个问题:
在没有RESTful支持的情况下使用*rest-jwt正确吗?
Rest JWT是一种API的身份验证方法,所以将它与Django默认身份验证混合使用有点误用,我认为这就是为什么您在这个问题上遇到困惑的原因。您应该使用rest-jwt方法作为独立的身份验证过程,而不是与内置的Django身份验证方法捆绑在一起。
考虑到这一点,我认为最好的方法是将第一个应用程序中的登录/注册功能整合到Vue应用程序中。然后,Vue应用程序中的auth方法可以从您的Django服务器访问API路由。
下面简要介绍一下它是如何工作的:
在myapp/urls.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文档:https://jpadilla.github.io/django-rest-framework-jwt/#usage
这样,您就不必担心重定向和更改身份验证过程。
https://stackoverflow.com/questions/52028525
复制相似问题