Python Django:即使没有用户登录,也可以生成会话密钥吗?
大家好,我只是想问一下:在Django的身份验证层之外手动生成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
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,我会这么做的。