我们有一个用 python 2.7 和 django 1.11 编写的遗留应用程序(没有要迁移的资源)。它还用于grappelli授权。我们尝试Edit为一些页面添加链接(每个页面显示一个Round对象的详细信息),这些页面应该只对有权编辑回合的授权用户可见(APPNAME | round | Can change round在grappelli网络界面中)。在模板中,权限检查如下:
{% if perms.round.can_change_round %}
 <a href="{{link_to_change_round}}" class="stuff-only-link">{% trans 'Edit' %}</a>
{% endif %}
当以下事件在很短的时间间隔内发生时,就会出现问题:
有权编辑回合的用户访问页面 - 并看到链接Edit
。
无权编辑回合的用户(例如匿名用户)访问同一页面 - 并且还看到了链接!
相关设置 ( settings.py
) 是:
CACHES = {
'default': {
# 'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
SOLO_CACHE = 'default'
SOLO_CACHE_TIMEOUT = 5*60
当我将缓存更改为 时dummy,问题就消失了。因此,完全禁用授权用户的缓存似乎是一个显而易见的解决方案。更准确地说:
a) 如果用户是匿名的(大多数真实站点用户)——请求的页面可以写入缓存,也可以从缓存中读取;
b) 如果一个用户被授权(大约 5-7 个用户)——请求的页面不能写入缓存也不能从缓存中读取。
我如何实现这一目标?
慕妹3146593
临摹微笑
相关分类