首页 > 解决方案 > 用户关闭浏览器时如何在 django rest 中处理令牌?

问题描述

我是 Django rest 框架的新手,我正在使用 Django rest 的令牌身份验证,但我不知道当用户直接关闭浏览器而不注销时如何处理令牌,在这种情况下,标准方式是什么?

另外,如果用户已经登录,我想实现然后重定向到仪表板如何实现?我的看法如下。

class LoginTemplateClass(TemplateView):
    template_name = 'index.html' 

class LoginAPI(viewsets.ModelViewSet):
    serializer_class = LoginSerializer

    def post(self,request):
        try:
            serializer = self.serializer_class(data=request.data,context={'request': request})                                           
            if serializer.is_valid():
                user = serializer.validated_data['user']
                token, created = Token.objects.get_or_create(user=user)                        
                return Response(token.key,status = 200)
            return Response(serializer.errors,status = 400)            
        except Exception as e:
            return Response({},status = 500)

标签: djangodjango-rest-framework

解决方案


当用户直接关闭浏览器而不注销时如何处理令牌,在这种情况下,标准方式是什么?

通常,您希望用户登录您的网站一段时间。Cookies 通常用于保存登录信息,因为这些信息将存储在客户端。

那么,您的登录流程应该是怎样的

see if cookie exists -> yes, then check if token exists in your backend
     |
     -----> no, then create a token and set it on the browser cookie with a reasonable timeout.

另外,如果用户已经登录,我想实现然后重定向到仪表板如何实现?

有两种方法可以做到这一点,

  1. 您可以在 return 语句中呈现 html 文件,而不是发送 http 响应。使用 Render() 函数链接到文档
  2. 您可以重定向登录函数以返回另一个视图,可以是 indexView。使用 Redirect() 函数链接到 doc

推荐阅读