跳转到主要内容

客户端和服务器端会话超时并带有警告

项目描述

https://img.shields.io/pypi/v/django-session-security.svg https://img.shields.io/travis/yourlabs/django-session-security.svg

此应用程序提供了一种机制,用于注销未活动的认证用户。如果用户离开工作站,则应自动注销未活动的浏览器,以保护在浏览器中可能显示的敏感数据。这可能对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

资源

您可以订阅邮件列表,提问或只是获取包更新信息。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

此版本没有提供源代码分发文件。请参阅有关 生成分发存档 的教程。

构建分发

支持