单击浏览器的后退按钮时如何销毁会话

Posted

技术标签:

【中文标题】单击浏览器的后退按钮时如何销毁会话【英文标题】:How to destroy session when clicks on browser's back button 【发布时间】:2020-04-19 18:01:15 【问题描述】:

我正在使用 laravel 中的 session->flash() 方法闪烁成功消息。 但是当用户单击返回按钮时,消息再次出现。如何解决这个问题。 我显示消息的代码是 -

@if(Session::get('success') )
    <script>
        swal(
            text: "Session::get('success')",
            button: localMsg.ok,

        ).then((isConfirm) => 
        );
    </script>
    @elseif(Session::get('error'))
    <script>
        swal(
            text: "Session::get('error')",
            button: localMsg.ok,

        ).then((isConfirm) => 
        );

    </script>
@endif

【问题讨论】:

【参考方案1】:

您应该销毁会话值以获得成功和错误消息

@if(Session::get('success') )
    <script>
        swal(
            text: "Session::get('success')",
            button: localMsg.ok,

        ).then((isConfirm) => 
        );
      Session::forget('success');  //Add this line to destroy value for 'success'
    </script>
    @elseif(Session::get('error'))
    <script>
        swal(
            text: "Session::get('error')",
            button: localMsg.ok,

        ).then((isConfirm) => 
        );
      Session::forget('error');  //Add this line to destroy value for 'error'
    </script>
@endif

【讨论】:

它的删除会话。甚至不显示会话消息【参考方案2】:

通过这种方式可以获取浏览器的返回按钮事件:

     if (window.history && window.history.pushState) 

        window.history.pushState('forward', null, './#forward');

        $(window).on('popstate', function() 
          alert('Back button was pressed.'); //here you know that the back button is pressed
        //write code to hide your success message when your clicks on browser back button

        );

      

【讨论】:

以上是关于单击浏览器的后退按钮时如何销毁会话的主要内容,如果未能解决你的问题,请参考以下文章

使用 asp.net 中的会话从帐户注销时遇到问题

注销后的 CodeIgniter 后退按钮

当我单击浏览器后退按钮或移动设备后退按钮时,保留选定的选项卡

servlet会话,注销后,按下浏览器的后退按钮时,再次显示安全页面[重复]

单击浏览器返回时会话消息重复

当我注销并单击浏览器后退按钮时,我仍然可以在 MVC4 应用程序中创建、编辑和删除用户