Ios Django webapp似乎忽略了它已登录

Ios Django webapp似乎忽略了它已登录,ios,django,ipad,session,Ios,Django,Ipad,Session,我目前正在开发一个Django网络应用程序,它将在我的客户iPad的主屏幕上启动。应用程序上的每个用户都需要登录一次,会话应持续数月。关闭浏览器和重新启动设备不会有任何区别。我以前在PHP中做过这项工作,从iOS 8开始,这些项目就一直正常工作 不幸的是,这只适用于桌面和iPad上的“普通”Safari。从主屏幕启动webapp将强制登录,我将执行此操作。当我检查iPad上设置的cookie时(通过Mac上的Safari调试器),我可以看到cookie将在一年后过期。这确认配置中的SESSION

我目前正在开发一个Django网络应用程序,它将在我的客户iPad的主屏幕上启动。应用程序上的每个用户都需要登录一次,会话应持续数月。关闭浏览器和重新启动设备不会有任何区别。我以前在PHP中做过这项工作,从iOS 8开始,这些项目就一直正常工作

不幸的是,这只适用于桌面和iPad上的“普通”Safari。从主屏幕启动webapp将强制登录,我将执行此操作。当我检查iPad上设置的cookie时(通过Mac上的Safari调试器),我可以看到cookie将在一年后过期。这确认配置中的
SESSION\u COOKIE\u AGE
变量工作正常:

SESSION_SAVE_EVERY_REQUEST = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_AGE = 31556928  # one year
在my Cookie中转储会话ID的会话数据会显示与
\u auth\u user\u ID
\u auth\u user\u hash
相同的值。在强制关闭iPad上的webapp后,当我第二次、第三次或第四次登录时,这些值不会改变

为清楚起见,以下是我在Project virtualenv中使用的软件包列表:

Django (1.8.7)
django-appconf (1.0.1)
django-ckeditor (5.0.2)
django-compressor (1.6)
django-extensions (1.6.1)
django-filer (0.9.12)
django-flat-theme (1.1.3)
django-hvad (1.4.0)
django-mptt (0.8.0)
django-multiselectfield (0.1.3)
django-polymorphic (0.7.2)
django-rosetta (0.7.8)
djrill (2.0)
docopt (0.4.0)
easy-thumbnails (2.2)
ecdsa (0.13)
Fabric (1.10.2)
feedparser (5.2.1)
FeinCMS (1.11.4)
mandrill (1.0.57)
microsofttranslator (0.7)
MySQL-python (1.2.5)
paramiko (1.16.0)
path.py (8.1.2)
Pillow (2.6.1)
pip (8.0.2)
polib (1.0.7)
pycrypto (2.6.1)
pytz (2015.7)
requests (2.9.1)
setuptools (11.0)
six (1.10.0)
solid-i18n (1.1.1)
Unidecode (0.4.18)
简单地将cookie设置为将来过期(这在PHP中解决了问题)对Django项目不起作用。有人以前遇到过这个问题吗

解决了!(2016-01-31)

我不知道我是否应该感到愚蠢,但问题已经解决了。我在主页视图上使用了
@login\u required
装饰程序。从空白/新会话加载webapp会将主页(/)重定向到
/login/?next=/
。因此,在Safari中打开webapp并将其添加到主屏幕时,也会将webapp url设置为
/login/?next=/
。但是,无论您是否已登录,此页面始终显示登录信息。我错误地认为它会将您重定向到
next
变量中设置的页面。但是,由于没有清单文件的homescreenapp总是重新加载保存它的URL,因此您将始终看到loginform

我现在解决了这个问题,从视图中删除了登录所需的装饰器,并添加了一个检查用户是否经过身份验证:

if not request.user.is_authenticated():

    ctx = {}
    response = render(request, 'registration/login.html', ctx)
    return response

else:

    # normal flow
我现在不用登录就可以使用webapp,即使在从多任务窗口关闭它之后也是如此


或者,您可以登录,然后将webapp添加到主屏幕

这里也有同样的问题。如果你找到了解决办法,请告诉我。谢谢,@VTe,但后来发现我的问题是另一个。Cookie.js(我用来保存一些用户pref)显然正在覆盖SafariIOS上的django会话Cookie。我会在找到时间后将一个bug提交到Cookie.js。