我有一个网络应用,会话在30分钟后到期。在客户端,当用户尝试与服务器交互并且服务器检测到用户会话已过期时,客户端将只是重定向到登录页面。
问题是,用户可能不知道他的会话已过期,并且当他尝试将更改发送到服务器时,继续在客户端上工作(比如写一个注释或编辑某些内容) ,坏事发生,浏览器重定向到登录页面,用户数据丢失。
在用户会话过期时如何防止数据丢失?感谢。
答案 0 :(得分:1)
如果用户正在撰写笔记或在会话中编辑任何内容,则会话不应过期。
您可以轻松地向服务器发送保持活动消息,因为他按下的第五个(甚至更多)字符可以使会话保持活动状态。
答案 1 :(得分:0)
如果用户在30分钟之前不执行任何操作,则会话才会过期。 如果用户在30分钟之前没有做任何事情,那么idel会话过期就不应该丢失任何数据因为没有什么可以保留。
答案 2 :(得分:0)
您是否考虑过提高会话超时? 30分钟很低。即使他们持续工作,也可能需要一些用户填写一个Web表单。我的会话超时是8-10个小时。缩短它们的唯一原因是节省服务器空间。这是你真正的问题吗?
答案 3 :(得分:0)
您需要在服务器中提供某种支持。一个好的实现是一个servlet,每隔31分钟用户“iddleness”(以避免重新验证会话,导致它永远不会过期)通过AJAX调用从客户端调用。
如果会话ID在服务器中发生变化,它会回复,客户端可能会显示某种消息。
更简单的实现是每31分钟不活动一次重新加载,以便用户被重定向到登录页面。这不需要服务器中的任何额外支持,但用户不太友好。
答案 4 :(得分:0)
有理由缩短会话时间。
如果您不需要,只需延长会话时间即可。
要么,
在每个更新会话的位置插入AJAX calls
。
答案 5 :(得分:0)
在HTML中,您可以在29分钟后(JS setTimeout)发出警报,并在30分钟到10秒之后(元刷新)跳转到“会话已过期”页面。
答案 6 :(得分:0)
请不要忘记在表单中添加{{ csrf_field() }}
。
我有同样的问题。然后,我将crsf令牌放在这里!而且,它现在工作正常。这是我的代码:
<form method="post" action="{{route('customer.store')}}" class="form-horizontal" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="row">
//Your code here
</div>
</form