Skip to main content

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

项目描述

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

这个应用程序提供了一种机制来注销非活动的经过身份验证的用户。如果用户离开他的工作站,不活动的浏览器应该自动注销,以保护可能显示在浏览器中的敏感数据。它可能对 CRM、Intranet 和此类项目很有用。

例如,如果用户去喝咖啡休息,这个应用程序可以在 5 分钟不活动后强制注销。

为什么不将会话设置为 X 分钟后过期?

或者“为什么这个应用程序甚至存在”?以下是原因:

  • 如果用户会话在用户完成阅读页面之前到期:他将不得不再次登录。

  • 如果用户会话在用户填写表单之前过期:他的工作将会丢失,他将不得不再次登录,并且可能会对你大喊大叫,亲爱的 django dev……至少我知道我会的!

此应用程序允许在会话到期时短路这些限制。

它是如何工作的 ?

当用户加载页面时,SessionSecurity 中间件会将最后一个活动设置为现在。最后一个活动作为日期时间存储在request.session['_session_security']中。为避免中间件更新 URL 的最后一个活动日期时间,请将 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

资源

您可以订阅邮件列表提出问题或只是被告知包更新。

项目详情


下载文件

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

内置分布

django_session_security_iplweb-2.6.6-py3-none-any.whl (109.1 kB 查看哈希)

已上传 py3