3

我有一个网络应用程序,该会话在 30 分钟后过期。在客户端,当用户尝试与服务器交互并且服务器检测到用户会话已过期时,客户端将简单地重定向到登录页面。

问题是,用户可能不知道他的会话已过期,并继续在客户端工作(例如,写笔记或编辑某些内容),当他尝试将更改发送到服务器时,发生了不好的事情,浏览器重定向到日志在页面和用户数据丢失。

关于如何在用户会话过期时防止数据丢失的任何想法?谢谢。

4

7 回答 7

0

您是否考虑过提高会话超时?30分钟太少了。一些用户可能需要更长的时间才能填写一份 Web 表单,即使他们一直在工作。我的会话超时是 8-10 小时。缩短它们的唯一原因是节省服务器空间。你真的有这个问题吗?

于 2012-12-26T09:55:29.433 回答
0

您将需要在服务器中提供某种支持。一个好的实现将是通过 AJAX 调用从客户端每 31 分钟调用一次用户“中途”的 servlet(以避免重新验证会话,这将导致它永不过期)。

如果服务器中的会话 id 发生变化,它会回复,并且客户端可以显示某种消息。

更简单的实现是每 31 分钟不活动时触发某种重新加载,以便将用户重定向到登录页面。这不需要服务器中的任何额外支持,但用户友好性会降低。

于 2012-12-26T09:55:41.353 回答
0

如果用户正在他的会话上写笔记或编辑任何内容,则会话不应过期。

您可以轻松地每按 5 个(甚至更多)字符向服务器发送一条保持活动消息,以保持会话处于活动状态。

于 2012-12-26T09:52:21.783 回答
0

会话超时时间短是有原因的。

  1. 安全
  2. 数据盗窃

如果您不需要这些,只需延长会话超时时间。或者,插入AJAX calls每个更新会话的位置。

于 2012-12-26T10:01:32.100 回答
0

在 HTML 中,您可以在 29 分钟后发出警报(JS setTimeout),并在 30 分钟 - 10 秒(元刷新)后跳转到“会话过期”页面。

于 2012-12-26T10:06:30.040 回答
-1

如果用户在 30 分钟内不执行任何操作,会话才会过期。如果用户在 30 分钟之前没有做任何事情,那么 idel 会话过期不会丢失任何数据,因为没有什么可以保留的。

于 2012-12-26T09:54:40.477 回答
-1

请不要忘记{{ csrf_field() }}在您的表格中添加。

我有同样的问题。然后,我把crsf token放在这里!而且,它现在工作正常。这是我的代码:

<form method="post" action="{{route('customer.store')}}" class="form-horizontal" enctype="multipart/form-data">
        {{ csrf_field() }}
        <div class="row"> 
            //Your code here
        </div>
</form
于 2018-11-03T05:29:13.233 回答