客户端和服务器端会话超时并出现警告
django-session-securit的Python项目详细描述
此应用程序提供了注销非活动身份验证用户的机制。一个 如果用户离开了其 工作站,用于保护浏览器中可能显示的敏感数据。它 可能对CRM、内部网和此类项目有用。
例如,如果用户离开去喝咖啡休息,此应用程序可以强制注销 在说5分钟的不活动之后。
为什么不将会话设置为在x分钟后过期?
或者“为什么这个应用程序还存在?”原因如下:- 如果用户会话在用户完成页面阅读之前过期:他将 必须再次登录。
- 如果用户会话在填写完表单之前过期:他的工作 会迷路的,他会再次登录,可能会对你大喊大叫,亲爱的 Django Dev…至少我知道我会的!
此应用程序允许在会话到期时短路这些限制。
它是如何工作的?
当用户加载页面时,SessionSecurity中间件将设置最后一个 活动至今。最后一个活动存储为datetime 在request.session['_session_security']中。避免使用中间件 更新URL的上次活动日期时间,将URL添加到 settings.SESSION_SECURITY_PASSIVE_URLS。
当用户移动鼠标、单击、滚动或按键时,会话安全将 将DateTime保存为JavaScript属性它将发送秒数 自从上次用户活动被记录到pingview之后,下次应该 发出砰的声响。
首先,应该在^{tt3}之后显示警告$ 几秒钟。警告显示一个类似“您的会话即将过期, 移动鼠标以扩展它”。
在显示此警告之前,SessionSecurity将上载自 上次客户端活动已被记录如果是,中间件将接受它 比它已经有的时间要短——也就是说,最近的另一项活动是 在另一个浏览器选项卡中检测到pingview将以 上次活动后的秒数-包括所有浏览器选项卡。
如果服务器没有记录其他更新的活动:它将 显示警告。否则它将更新javascript中的最后一个活动 pingview响应。
同样的内容将在settings.SESSION_SECURITY_EXPIRE_AFTER秒后过期。 Javascript将首先向PingView发出ajax请求,以确保另一个 在其他任何地方都没有检测到最近的活动-在任何其他浏览器选项卡中。
要求
- python 2.7或3.5+
- jQuery 1.7+
- django 1.8至2.0
- django.contrib.staticfiles或“yoyo”
资源
你可以订阅邮件列表,提出问题,或只是被告知 包更新。