我正在尝试将项目从 Django 1.4 迁移到 Django 1.5.1 ...
Web 服务必须可作为经过身份验证的用户和匿名用户访问。我们使用带有 Apache 模块的外部身份验证(根据https://docs.djangoproject.com/en/1.5/howto/auth-remote-user/设置“REMOTE_USER”环境变量)。
url https://example.com/具有不同的内容,具体取决于用户是匿名的还是经过身份验证的。
我们在 Django 1.4 中使用的策略是只有以 /auth/ 开头的 url 才会被 Apache 的模块验证。如果用户(位于https://example.com/页面上)选择进行身份验证,他会跳转到https://example.com/auth/。/auth/ 由 Apache 的模块进行身份验证,然后由 Django 应用程序提供服务,该应用程序重定向回https://example.com/。由于 session_key,Django 知道用户已通过身份验证。
不幸的是,对于 Django 1.5.1 ...每次浏览器从经过身份验证的 URL 移动到未经过身份验证的 URL 时,session_key 都会更改。
在我的日志中,我可以看到 (Django 1.5.1) :
DEBUG 2013-04-09 09:15:20,571 views home None
DEBUG 2013-04-09 09:15:48,886 views auth ow1bzgdajs7i12d9bmfwwm3fpw47elna
DEBUG 2013-04-09 09:15:48,981 views home mehlf1x0iemx9yc3ddf6mhnls1nha1r4
- 第一行是用户访问https://example.com/时。
- 其次,当他点击“Connexion”按钮时。
- 第三是 HttpResponseRedirect 到 / 。
- 最后一个字符串是 request.session.session_key 。
当我在 /auth (Django 1.5.1) 上删除 apache 身份验证时:
DEBUG 2013-04-09 09:16:45,268 views home None
DEBUG 2013-04-09 09:16:48,258 views auth None
DEBUG 2013-04-09 09:16:48,345 views home None
使用 Django 1.4,相同的日志给出的内容如下:
DEBUG 2013-04-09 09:11:21,899 views home None
DEBUG 2013-04-09 09:11:41,261 views auth f16ab3e574b866177803f9011dc33ab8
DEBUG 2013-04-09 09:11:41,375 views home f16ab3e574b866177803f9011dc33ab8
这种行为改变是预期的吗?(新功能?)我们如何修复它?
谢谢!