Django:即使没有用户登录也可以生成session_key吗?

问题描述 投票:0回答:1

您好想问:在Django的身份验证层之外手动生成Django的session_key(sessionid cookie)是一种好习惯吗?

我正在实现post hit/page viewspost comment机制,我想在sessionidsession模型中将PostHit用于PostComment字段。原因是,我不想为此目的创建用于生成定制会话密钥的完整逻辑,因为我认为Django的session_key非常简单明了,足以应付Web访问者会话的记录。

但是我突然想到sessionid仅适用于已登录的用户,不应为未经身份验证的访问者生成。如果仍然不好,您是否有更好的方法为已登录和匿名访问者生成会话密钥?

非常感谢!

session_key的示例实现:

class APIDetail__Post(generics.RetrieveUpdateDestroyAPIView):
  queryset           = Post.objects.all().order_by('-publish_date')
  serializer_class   = PostSerializer
  lookup_field       = 'slug'
  permission_classes = [permissions.IsAuthenticatedOrReadOnly]

  def get_queryset(self):
    post_slug = self.request.resolver_match.kwargs['slug']
    post = Post.objects.get(slug=post_slug)
    if post:
        if post.published and post.approved:
            if not self.request.session.session_key:
                self.request.session.create()
                if not PostHit.objects.filter(post=post, session=self.request.session.session_key):
                    view = PostHit(
                        post=post,
                        ip=self.request.META['REMOTE_ADDR'],
                        created=datetime.now(),
                        session=self.request.session.session_key)
                    view.save()
            else:
                if not PostHit.objects.filter(post=post, session=self.request.session.session_key):
                    view = PostHit(
                        post=post,
                        ip=self.request.META['REMOTE_ADDR'],
                        created=datetime.now(),
                        session=self.request.session.session_key)
                    view.save()
    return self.queryset
python django django-authentication django-sessions
1个回答
2
投票

会话ID是可以使用的,与身份验证无关。请勿将其与Auth Token混淆。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.