处理django rest framework + vue SPA auth

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理django rest framework + vue SPA auth相关的知识,希望对你有一定的参考价值。

我如何获得与django为经过身份验证的用户(用户全局对象以检索用户配置文件的数据等)提供的功能相同的功能,用于单页应用程序(当然,使用Vue Router)。

我的观点是,我不知道如何创建一个vue中间件,等同于django中间件,以便在用户提供用户名和密码后保持用户登录。

我知道我可以使用django rest framework jwt来实现端点/api-token-auth/来获取所需的令牌(将其存储到localStorge中,因此我可以将其置于axios头中)以便能够从api中检索信息,但我不知道除了令牌之外还有任何用户会话,我当然没有关于传递给模板的用户的任何信息。

我怎样才能将用户全局对象传递给每个模板?有一个简单的方法吗?

提前致谢。

答案

通过将SessionAuthentication类添加到settings.py,可以使用Django REST框架实现会话身份验证,如下所示。

REST_FRAMEWORK = 
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
    ),
   'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )

这将使用Django's默认会话后端进行身份验证。捕获,您需要确保为任何“不安全”的HTTP方法调用包括有效的CSRF令牌 - PUT,PATCH,POST,DELETE。

要访问当前用户,您可以使用创建API端点/users/current

class CurrentUserView(APIView):
    def get(self, request):
        serializer = UserSerializer(request.user)
        return Response(serializer.data)

以上是关于处理django rest framework + vue SPA auth的主要内容,如果未能解决你的问题,请参考以下文章

在 Django REST Framework 中处理嵌套对象表示

如何在 Django Rest Framework 中处理并行请求?

处理 django rest framework + vue SPA auth

处理django rest framework + vue SPA auth

Django Rest Framework,模型序列化器,处理只读数据

django-rest-framework框架总结之认证权限限流过滤分页及异常处理