客户端和服务器端会话超时并带有警告
项目描述
此应用程序提供了一种机制,用于注销未活动的认证用户。如果用户离开工作站,则应自动注销未活动的浏览器,以保护在浏览器中可能显示的敏感数据。这可能对CRM、内网等此类项目很有用。
例如,如果用户去休息一下,此应用程序可以在大约5分钟的未活动后强制注销。
为什么不在X分钟后设置会话过期呢?
或者“为什么这个应用程序甚至存在?”以下是原因:
如果用户会话在用户完成阅读页面之前过期:他必须再次登录。
如果用户会话在用户完成填写表单之前过期:他的工作将丢失,他必须再次登录,并且可能大声责备您,亲爱的Django开发者……至少我知道我会这样!
此应用程序允许绕过会话过期的这些限制。
它是如何工作的?
当用户加载页面时,SessionSecurity 中间件会将最后活动时间设置为当前时间。最后活动时间以 datetime 存储在 request.session['_session_security'] 中。为了避免中间件更新 URL 的最后活动 datetime,请将 URL 添加到 settings.SESSION_SECURITY_PASSIVE_URLS。
当用户移动鼠标、点击、滚动或按下键时,SessionSecurity 会将 DateTime 保存为 JavaScript 属性。它将自上次用户活动记录以来的秒数发送到 PingView,下次应该 ping。
首先,在 settings.SESSION_SECURITY_WARN_AFTER 秒后应显示警告。警告显示类似“您的会话即将过期,请移动鼠标以延长它”的文本。
在显示此警告之前,SessionSecurity 将自上次客户端活动记录以来经过的时间上传。如果它比中间件已有的更短 - 即另一个浏览器标签中检测到了另一个更近期的活动,中间件将采用它。PingView 将响应自上次活动以来的秒数 - 包括所有浏览器标签。
如果没有其他更近期的活动被服务器记录:它将显示警告。否则,它将根据 PingView 的响应更新 JavaScript 中的最后活动。
同样,在 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
资源
您可以订阅邮件列表,提问或只是获取包更新信息。
由 RTFD 慷慨托管的文档,
由 PyPi 慷慨托管的包,
由 Google 慷慨托管的邮件列表
对于 安全 问题,请联系 yourlabs-security@googlegroups.com
由 Travis-ci 慷慨托管的持续集成
项目详情
django_session_security_iplweb-2.6.6-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3246258aae5257cf18ffe2f5013156acbdc0c161a6a609d788b6cc1a11a4b0d1 |
|
MD5 | 834b6403970e4bdf135190c7f8522cd5 |
|
BLAKE2b-256 | d1d63fed191a23f76b93196564a5a4a3e4467478f24fd8f67444ea0a877b1e9f |