【问题标题】:Django: detect the mouse click if session outDjango:如果会话结束,检测鼠标点击
【发布时间】:2018-08-01 23:04:25
【问题描述】:

我为我的应用程序创建了一个登录页面,并将会话设置为 3 分钟,它工作正常,但问题是当会话结束时,用户仍然能够在当前页面上执行许多活动,即注销除非用户刷新页面或重定向到另一个页面,否则页面不会显示。 那么,一旦会话结束并且用户在当前页面上进行任何活动,如何进行注销?

【问题讨论】:

  • herehere 可能重复。
  • 这些答案是关于如何在 Django 中设置会话,我已经完成了。问题是,如果某个特定用户发生了会话退出,那么应该重定向自动退出页面,或者在第一次点击时,应该将其退出,而这并没有发生。

标签: python django django-sessions


【解决方案1】:

您可以在后台运行 javascript setTimeout,它将检查用户是否已登录,三分钟后浏览器窗口将刷新。

或(更好)

您可以在服务器端运行此计时器,当客户端尝试更改某些内容时,首先查看计时器或客户端登录前的时间值,然后根据时间执行操作或不是。因此,在您间隔三分钟后,用户将能够看到内容,但是当他尝试更改某些内容时,后端会拒绝该请求并要求他再次登录。

这是一个更好的解决方案,因为当涉及到身份验证和类似的事情时,最好每次都在服务器端而不是在客户端浏览器中进行,这样就不会被利用。

但是

这两种解决方案可以同时应用(这样客户端的浏览器会重新加载窗口并将客户端重定向到登录页面,而服务器会拒绝该请求,从而不会以任何方式修改数据)。

【讨论】:

  • 在给定时间,可以有多个用户处于活动状态,我们怎么知道我们需要注销哪个用户?还有一个定时器不固定的事情是 django,会话定时器只有在用户不做任何活动时才会结束。
  • 是的。考虑在用户模型上设置一个字段last_action,该字段将在记录的用户的最后一次操作时更新,然后根据每个请求的指定时间间隔检查该字段。
猜你喜欢
  • 1970-01-01
  • 2020-04-18
  • 2011-11-21
  • 2021-09-06
  • 2015-08-03
相关资源
最近更新 更多