跳转到主要内容

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

项目描述

https://img.shields.io/pypi/v/django-session-security.svg https://github.com/yourlabs/django-session-security/actions/workflows/tests.yml/badge.svg

此应用程序提供了一种注销非活动已认证用户的方法。如果用户离开工作站,则非活动浏览器应自动注销,以保护浏览器中可能显示的敏感数据。这可能对CRM、内部网和类似项目有用。

例如,如果用户离开去喝咖啡,此应用程序可以在用户5分钟内未活动后强制注销。

为什么不在X分钟后使会话过期?

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

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

  • 如果用户会话在用户完成填写表单之前过期:他的工作将会丢失,他需要重新登录,并且可能还会对你,亲爱的Django开发者……大喊大叫……至少我知道我会这样!

此应用允许绕过会话超时的限制。

它是如何工作的呢?

当用户加载页面时,SessionSecurity中间件会将最后活动设置为当前时间。最后活动以datetime形式存储在 request.session['_session_security'] 中。为了避免中间件更新该最后活动datetime的URL,请将URL添加到 settings.SESSION_SECURITY_PASSIVE_URLS

当用户移动鼠标、点击、滚动或按键时,SessionSecurity会将DateTime作为JavaScript属性保存。它将在下次应该ping时将自上次用户活动记录以来经过的秒数发送到PingView。

首先,应该在 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-2.6.7.tar.gz (100.5 kB 查看哈希值)

上传时间 源代码

构建分发

django_session_security-2.6.7-py3-none-any.whl (115.4 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面