Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:即使没有用户登录,也可以生成会话密钥吗?_Python_Django_Django Authentication_Django Sessions - Fatal编程技术网

Python Django:即使没有用户登录,也可以生成会话密钥吗?

Python Django:即使没有用户登录,也可以生成会话密钥吗?,python,django,django-authentication,django-sessions,Python,Django,Django Authentication,Django Sessions,大家好,我只是想问一下:在Django的身份验证层之外手动生成Django的会话密钥(sessionidcookie)是一种好的做法吗 我正在实现一个post hit/page views和post comment机制,我想使用sessionid用于post hit和post comment模型中的session字段。原因是,我不想创建一个完整的逻辑来生成用于此目的的定制会话密钥,因为我认为Django的session\u key非常简单,足以满足web访问者会话的录制 但我突然想到,sessi

大家好,我只是想问一下:在Django的身份验证层之外手动生成Django的会话密钥(
sessionid
cookie)是一种好的做法吗

我正在实现一个
post hit/page views
post comment
机制,我想使用
sessionid
用于
post hit
post comment
模型中的
session
字段。原因是,我不想创建一个完整的逻辑来生成用于此目的的定制会话密钥,因为我认为Django的
session\u key
非常简单,足以满足web访问者会话的录制

但我突然想到,
sessionid
可能只适合登录用户,不应该为未经身份验证的访问者生成。如果它不是很好,您有没有更好的方法为登录和匿名访问者生成会话密钥

非常感谢

会话密钥的示例实现:

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

会话ID可以在不考虑身份验证的情况下使用。不要将其与身份验证令牌混淆。

会话ID可以在不考虑身份验证的情况下使用。不要将其与身份验证令牌混淆。

会话ID可以在不考虑身份验证的情况下使用。不要把它和认证令牌混淆。谢谢一堆@PankajSaini,明白了!因此,我将继续为上述目的集成会话密钥。。。顺便说一句,我正在使用TokenAuthentication作为我的主要DRF Auth类,因此我认为从这里开始一切都很好。@PankajSaini您应该将您的评论作为答案重新发布(以便Micheal可以接受)。@Brunodesshuilliers感谢Bruno,我会这样做。会话ID可以在不考虑身份验证的情况下使用。不要把它和认证令牌混淆。谢谢一堆@PankajSaini,明白了!因此,我将继续为上述目的集成会话密钥。。。顺便说一句,我正在使用TokenAuthentication作为我的主要DRF身份验证类,因此我认为从这里开始一切都很好。@PankajSaini您应该将您的评论作为答案重新发布(以便Micheal可以接受)。@Brunodesshuilliers感谢Bruno,我会这么做的。