0

我正在使用 ASP.NET 构建一个 Web 应用程序,并且安全要求非常严格;目前,如果用户空闲 2 分钟,应用程序将锁定。每个页面都有一个注册的 javascript 计时器,该计时器在页面加载时启动,并在 2 分钟后将它们重定向到锁定页面。当锁定页面加载到服务器上时,它会在数据库中将用户标记为“锁定”,以阻止他们在未解锁的情况下导航离开。锁定页面还设置了一个 15 分钟的计时器,在此之后用户应完全注销。

目前,我通过将 js 设置为重定向到注销页面来实现这一点,该页面在用户被点击时将其注销,并在 15 分钟后触发。但是没有什么可以阻止用户刷新锁定页面并无限期地重新启动 15 分钟计时器。我希望服务器也能在指定时间后关闭并启动它们。时间不必完全匹配:在 10 秒之内就可以了。

那么:有没有办法做到这一点?理想情况下,锁定页面会启动一个服务器端进程,在时间用完后将用户引导出去。不知道如何实现这样的事情,如果它甚至可能的话

4

1 回答 1

1

您将什么用于持久数据存储?数据库?

我正在编写一个类似的客户端设置来提醒用户他们将在十五分钟后被注销,如果他们没有点击一个表明他们仍然在那里的按钮。它将从两分钟开始。

这只是我的经理想要的方便。我已经进行了服务器端检查,以确保在用户超过时间限制时将其注销。实际上,有两个检查。

我的第一个检查是保存用户会话令牌的 cookie 的新鲜度。在用户每次请求服务器请求后,其新鲜度设置为十五分钟。如果 cookie 过期,则用户退出。

另一个是用户最后一次服务器请求的记录。如果超过十五分钟,则用户退出。

如果我是你,我会使用第二种方案。

在我的数据库中,我将创建一个锁定表,其中包含两列数据,指示用户是否被锁定以及何时被锁定。十五分钟过去后,如果用户没有完成清除锁定的程序,则注销用户。如果他们明确执行该过程,请清除锁定记录。这样,仅刷新不会清除持有锁定时间的数据库列。但它可以让你检查十五分钟是否已经过去。

如果您允许锁定激活时间为空,则可以将两列压缩为一列。但我更喜欢有一列明确说明锁定是否生效。您还可以将列添加到现有用户数据库。

于 2013-10-07T18:39:47.733 回答