x min不活动后强制用户登录

时间:2016-05-28 14:41:19

标签: ms-access access-vba

我的应用程序有1个登录表单,1个主仪表板表单,7/8子仪表板表单和许多其他非主要/仪表板表单。

我想实现某种系统,如果用户在x分钟内处于非活动状态,则会要求他们再次登录。

有没有办法让全局功能连续运行,如果需要登录则每60秒检查一次?显而易见的方法是使用on timer事件。然而,由于有这么多表格,我不得不将呼叫添加到每个表格等。

有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我不认为有一种简单的方法可以做到这一点。

首先,我们必须定义" 用户在x分钟内处于非活动状态"真正意思。有一些选择:

  1. x分钟访问应用程序不是焦点窗口。 (缺点:用户可能在前面使用Access应用程序闲置,从不触发焦点丢失)
  2. 某个表单没有集中 x分钟。 (缺点:您必须为您的应用程序中的每个表单实施检查例程,记录所有GotFocus和/或LostFocus事件以验证至少所有x分钟的另一个表单是但是:使用相同形式合法工作x分钟而不需要改变焦点的用户将触发注销。)
  3. 没有用户互动(即,从按钮点击触发的事件等)x分钟。 (缺点:对于您处理的每个事件,您必须添加其他代码来重置x-minutes-timer。此外,您还需要为导航引入新的事件处理程序(请参阅#2,焦点丢失),这样您就不会#39;通过浏览表单来注销活跃的用户。)
  4. ......其他方法可能也不会更好。
  5. 没有必要解决一系列新问题,没有好办法。

    更好的解决方案是在后端数据库中设置默认空闲时间,假设它是一个活动数据库服务器而不仅仅是另一个Access数据库(甚至是表单所在的同一数据库)。

    在后一种情况下,如果您没有专用的数据库服务器,我会挑战您重新考虑为什么您希望首先登录超时。或者,改写:

    在仅限Access的数据库中,什么是登录?

    安全?您无法阻止用户访问数据库中的所有数据,无论他们是否具有登录信息。请记住:Access数据库只是文件系统上的一个文件。用户使用该数据库实际上已经可以访问该文件中的所有内容。在Access中没有用户级别的安全性(至少不再是这样;并且那是最好的)。

    您可以加密整个数据库(文件 - >信息),但您只能为每个数据库指定一个密码,而不是每个用户。同样:无法在Access中完成用户级安全性。

    有关Access数据库安全性的更多信息,请参阅此答案:https://stackoverflow.com/a/530778/6216216