【问题标题】:Laravel view @include auto logout when refreshLaravel 视图 @include 刷新时自动注销
【发布时间】:2018-07-11 16:42:49
【问题描述】:

我正在使用 Laravel 5.5 和 mysql 数据库,会话存储在数据库中。

@Problem : 每当我刷新或进入另一个页面时,它都会将我注销并将我重定向回登录页面。

@Cause : 调试后,我发现每当我在名为master.blade.php 的视图模板中@include 一个视图top.blade.php 时,当我刷新页面时,它会自动注销我并终止会话。

top.blade.php里面的代码:

<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">

  <!-- Mobile Menu -->
  <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
    <span class="sr-only">Toggle navigation</span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
  </button>

  <!-- Header Icon -->
    <a  href="{{ url('/') }}">
      <img class="navbar-brand" src="{{ asset('images/head.png') }}" alt="Little Project">
    </a>

    <!-- Message Of The Day -->
    <div class="navbar-text visible-xs"><p>Little Project</p></div>
    {{ Auth::user()}} <!-- to check the user info if it retains -->
</div>



<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">

<!--Right side of the NavBar -->
  <ul class="nav navbar-nav navbar-right">
      @guest
        <li><a href="{{ route('login') }}">Login</a></li>
        <li><a href="{{ route('register') }}">Register</a></li>
      @else
        <li><a href="{{ route('home') }}">Demo</a></li>
        <li><a href="{{ Auth::logout() }}">Logout</a></li>
      @endguest
  </ul>

</div><!-- /.navbar-collapse -->

虽然master.blade.php 文件是

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>

<!--meta header-->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    <!-- Title -->
    <title>Little Project</title>
</head>
<body>
    @include('constants.top')
    <div class="container">
      <!-- Contents -->
      @yield('content')

    </div>


    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}"></script>
</body>

</html>

但是刷新时,只要我@include top.blade.php,它就会销毁所有会话

【问题讨论】:

  • 感谢您的反馈,我发现我的问题实际上是每次加载页面时都会调用Auth::logout()。谢谢!

标签: php laravel session laravel-5 laravel-blade


【解决方案1】:

我发现了我的问题,

事实上,我的top.blade.php 文件中有&lt;li&gt;&lt;a href="{{ Auth::logout() }}"&gt;Logout&lt;/a&gt;&lt;/li&gt;,它会在每次加载页面时自动注销。 不好的做法!!

应该做的是通过带有csrf_field()的表单将post方法定向到logout controller

【讨论】:

  • 谢谢。拯救了我的夜晚;)
【解决方案2】:

确保您在路由中使用web 中间件组。并确保app/Http/Kernel.php 中的web 中间件组包含\Illuminate\Session\Middleware\StartSession::class,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多