gpt4 book ai didi

Django session 身份验证和禁用的 cookie

转载 作者:行者123 更新时间:2023-12-04 15:22:59 26 4
gpt4 key购买 nike

django 中的 session 身份验证与 cookie 有什么关系吗?如果用户在他的浏览器上禁用了 cookie,它会起作用吗?如果用户的浏览器禁用了 cookie,django 是否应该警告用户?

最佳答案

不,身份验证是基于 cookie 的 - session ID 储存在 cookies 中!

The Django sessions framework is entirely, and solely, cookie-based. It does not fall back to putting session IDs in URLs as a last resort, as PHP does. This is an intentional design decision. Not only does that behavior make URLs ugly, it makes your site vulnerable to session-ID theft via the “Referer” header.



有一些解决方法,例如您可以将 session ID 放在查询字符串中。查看这篇文章: http://www.stereoplex.com/blog/cookieless-django-sessions-and-authentication-with

作者警告: 除非您了解潜在的安全后果,否则请勿执行我将要描述的操作

request.GET 获取 session ID 的中间件并将其放入 request.COOKIES (FakeSessionCookie 中间件必须放在 settings.py 中的 SessionMiddleware 之前):
from django.conf import settings

class FakeSessionCookieMiddleware(object):

def process_request(self, request):
if not request.COOKIES.has_key(settings.SESSION_COOKIE_NAME) \
and request.GET.has_key(settings.SESSION_COOKIE_NAME):
request.COOKIES[settings.SESSION_COOKIE_NAME] = \
request.GET[settings.SESSION_COOKIE_NAME]

身份验证后,您应该在对服务器的所有请求中包含 session ID 作为 url (GET) 参数。

关于Django session 身份验证和禁用的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20706480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com