我有一个网络应用程序,该会话在 30 分钟后过期。在客户端,当用户尝试与服务器交互并且服务器检测到用户会话已过期时,客户端将简单地重定向到登录页面。
问题是,用户可能不知道他的会话已过期,并继续在客户端工作(例如,写笔记或编辑某些内容),当他尝试将更改发送到服务器时,发生了不好的事情,浏览器重定向到日志在页面和用户数据丢失。
关于如何在用户会话过期时防止数据丢失的任何想法?谢谢。
我有一个网络应用程序,该会话在 30 分钟后过期。在客户端,当用户尝试与服务器交互并且服务器检测到用户会话已过期时,客户端将简单地重定向到登录页面。
问题是,用户可能不知道他的会话已过期,并继续在客户端工作(例如,写笔记或编辑某些内容),当他尝试将更改发送到服务器时,发生了不好的事情,浏览器重定向到日志在页面和用户数据丢失。
关于如何在用户会话过期时防止数据丢失的任何想法?谢谢。
您是否考虑过提高会话超时?30分钟太少了。一些用户可能需要更长的时间才能填写一份 Web 表单,即使他们一直在工作。我的会话超时是 8-10 小时。缩短它们的唯一原因是节省服务器空间。你真的有这个问题吗?
您将需要在服务器中提供某种支持。一个好的实现将是通过 AJAX 调用从客户端每 31 分钟调用一次用户“中途”的 servlet(以避免重新验证会话,这将导致它永不过期)。
如果服务器中的会话 id 发生变化,它会回复,并且客户端可以显示某种消息。
更简单的实现是每 31 分钟不活动时触发某种重新加载,以便将用户重定向到登录页面。这不需要服务器中的任何额外支持,但用户友好性会降低。
如果用户正在他的会话上写笔记或编辑任何内容,则会话不应过期。
您可以轻松地每按 5 个(甚至更多)字符向服务器发送一条保持活动消息,以保持会话处于活动状态。
会话超时时间短是有原因的。
如果您不需要这些,只需延长会话超时时间。或者,插入AJAX calls
每个更新会话的位置。
在 HTML 中,您可以在 29 分钟后发出警报(JS setTimeout),并在 30 分钟 - 10 秒(元刷新)后跳转到“会话过期”页面。
如果用户在 30 分钟内不执行任何操作,会话才会过期。如果用户在 30 分钟之前没有做任何事情,那么 idel 会话过期不会丢失任何数据,因为没有什么可以保留的。
请不要忘记{{ 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