【问题标题】:Laravel Fortify logoutLaravel Fortify 注销
【发布时间】:2021-03-19 12:46:31
【问题描述】:

我有一个 Laravel 8 Fortify 系统。我有一个如下所示的注销链接:

    <a class="dropdown-item" href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
                Logout
              </a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
        @csrf
      </form>

因此,当我单击此注销链接时,它不会删除已登录的会话 cookie。当我点击后退按钮时,它只是将我重定向回主页,就像它仍然登录一样。有什么想法吗?

【问题讨论】:

  • 您是否确认会话 cookie 未被清除?如果没有,您可以使用 Debugbar。我认为这是您正在经历的浏览器行为。单击后退按钮时,会呈现上一页的缓存以减少不必要的请求。 .我刚刚检查了我正在处理的 Fortify 应用程序,我得到了相同的结果,但是如果我刷新,中间件会将我重定向到登录视图。
  • 没错,这是浏览器缓存。看起来很愚蠢,Laravel 团队没有关注这样的事情,因为这是一个明显的安全问题,尽管它与 Laravel 没有任何关系。如果我注销并且其他人来到我的计算机并单击后退按钮,他可以返回并查看我所谓的安全登录注册系统的主页。我用一个小 php 脚本更改了标题信息并禁用了缓存,解决了这个问题。
  • 可能值得回答您自己的问题并将其标记为正确答案,因为您找到了提高应用程序安全性的解决方案。它可能会在未来帮助某人

标签: laravel fortify


【解决方案1】:

使用这个退出按钮,我想它会解决你的问题:

<a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
    {{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
    @csrf
</form>

【讨论】:

  • 谢谢,但事实并非如此。我认为这是一个中间件问题,但自从我在那条路线上使用了 auth 中间件后,我不明白怎么做。
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 2017-10-26
  • 1970-01-01
  • 2018-07-03
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
相关资源
最近更新 更多