我真的不明白什么时候创建会话以及创建它的实体(每个ip,每个浏览器,每个登录用户).我在文档中看到默认情况下会话是按访问者创建的 - 但访问者(浏览器或IP)是什么?
Django 1.4提供了几种维护django会话的方法:
我对使用的看法:
i)仅缓存:不可取,用户会话可能会从memcache中清除.
ii)Db + cache(cached_db):优选,简单和安全的解决方案.
iii)签名cookie会话:优先,没有数据库命中.
假设会话数据非常小,即将其存储在cookie中没有问题.在数据库+ memcache驱动的会话引擎上使用签名cookie是否有任何性能优势?对于N个并发新用户,将保存N个数据库命中的顺序.这将减少数据库服务器每单位时间必须处理的总查询.
更新:我们发现redis或aerospike是django真正强大且高吞吐量的会话后端.我们正在使用redis会话后端
我的网站是一个用Django编写的数字市场网站.
默认情况下,网站上的数字内容(文本,图像,视频)处于"锁定"状态.只有购买这些内容的用户才能查看.
有一个故事,某个用户(谁购买了内容)免费向许多人赠送用户名/密码(例如,Facebook群组中有1000多人).然后,这1,000名用户可以使用该单一用户名/密码登录,并查看"锁定"的数字内容而无需支付一分钱.
是否可以限制同一帐户的并发登录次数?
我发现这个包裹:
https://github.com/pcraston/django-preventconcurrentlogins
但是当有人使用相同的用户名/密码登录时,它的作用是记录以前的用户.这无济于事,因为每个用户每次只需输入用户名/密码即可访问"锁定"内容.
django django-admin django-authentication django-sessions django-users
如何显示所有会话变量?我知道可以使用变量访问request.session['variable']但我想知道是否有其他变量由其他人设置或在用户登录或类似的其他事件期间自动设置.
我试图通过会话信息跟踪AnonymousUsers(如果可能的话).
在旧版本的Django中,我可以做类似的事情:
def my_view(request):
# in case the user wasn't logged in, create/save a session
if not request.session.session_key:
request.session.save()
# would give me the key and on the next load it would persist
session_key = request.session.session_key
Run Code Online (Sandbox Code Playgroud)
但是对于1.6(我已经离开游戏一段时间),每次请求通过时都会产生一个新的唯一会话ID.没有持久性.我试着做一点阅读,但是因为我没有参加Django练习而进入了圈子.
如何保持会话?我需要编写自己的cookie处理吗?
我随机时间不断收到此错误,每当我触摸django.wsgi文件时,它只会在几个小时后再次发生.我迷失了该怎么做.我的middleware_classes如下:
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.facebookConnectMiddleware.FacebookConnectMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
Run Code Online (Sandbox Code Playgroud)
当我执行"if request.session"语句时,错误总是出现在facebook中间件中.谢谢
对于我的网站,几乎每个页面都有一个标题栏显示"欢迎,ABC",其中"ABC"是用户名.这意味着request.user将为每一个请求调用,导致数据库一次又一次地命中.
但是一旦用户登录,我应该能够将他的user实例存储在他的cookie中并加密它.这样我可以避免重复访问数据库,而只是request.user从cookie中检索.
你会如何修改Django来做到这一点?是否有任何Django插件可以满足我的需求?
谢谢
当用户登录时,一些细节会保存到会话中,让我们说使用key ='user_settings'
当系统内发生某些更新时,我需要遍历所有用户并从每个用户会话中删除"user_settings"键.这样我就会触发从数据库中加载新鲜的细节.
如何遍历所有会话并从每个会话中删除密钥?
我正在使用django创建对话式聊天机器人。为了保持chatbot中的聊天流程,我使用django会话。但是,当我在iframe中使用聊天机器人的链接时,它不存储任何会话,并且流量中断。我想要一个即使在iframe中也有助于维护会话的函数。
对于Iframe
<html>
<head></head>
<body>
<embed style=" width: 384px; height: 525px; margin-right: 0px !important; bottom: 0px; float: right; position: absolute; bottom: 30px; width: 100%;" frameborder="0" scrolling="no" id="iframe" src="http://*********.com/********/*******.html">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
代码用于维护会话
@staticmethod
def extract_data(request, input_data):
from chat import validations
if 'city' not in request.session:
response_data = {'extra': {}, 'data': {}}
response_data['extra']['statement'] = 'Select Car Model which you like to rent?'
response_data['extra']['type'] = 'carmodel'
response_data['data'] = Cars.city_check(request,response_data, input_data)
elif 'veh_name' not in request.session:
response_data = Cars.veh_name_check(request, input_data)
elif 'days' not in …Run Code Online (Sandbox Code Playgroud) 在我的Django应用程序中,我希望用户在30分钟不活动后自动注销,所以我在settings.py中使用了这个设置:
SESSION_COOKIE_AGE = 1800
Run Code Online (Sandbox Code Playgroud)
但是,使用此设置会在30分钟内将用户注销,而不管活动如何.由于Django应用程序中的不活动,如何强制执行自动注销?
django ×10
django-sessions ×10
session ×2
django-admin ×1
django-users ×1
iframe ×1
middleware ×1