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



嗨,只是想问:在Django的身份验证层之外手动生成Django的session_key(sessionidcookie(是一个好习惯吗?

我正在实现一个post hit/page viewspost comment机制,我想使用该sessionid用于PostHitPostComment模型中的session字段。原因是,我不想为此目的创建一个完整的逻辑来生成定制的会话密钥,因为我认为 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

会话ID 是无论身份验证如何都可以使用的东西。不要将其与身份验证令牌混淆。

相关内容

最新更新