【问题标题】:Session variable is not clearing in Laravel using Route Redirect with使用路由重定向在 Laravel 中未清除会话变量
【发布时间】:2015-10-10 06:55:20
【问题描述】:

我正在使用 Laravel 5.1 和 Zizaco/Entrust 来获取角色和权限。这里我在清除会话变量时遇到了问题。根据我的理解 with() 方法 - 它的目的是添加错误消息或一些输入数据,仅用于该特定重定向并且仅用于一页。在我的情况下,它正确重定向到仪表板,但即使在刷新页面后会话消息仍然存在。

路线

<?php
  Route::group(['middleware' => 'auth'], function () 
  { 
        Route::get('dashboard', function () { 
          return view('dashboard');
        });
       Entrust::routeNeedsPermission('add_item', 'Create_Item', Redirect::to('dashboard/')->with('message', 'You Dont have peremissions..'), false );
       Route::get('add_item', 'ItemController@create');
  });

查看

@if(Session::has('message')) 
  <p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{     Session::get('message') }}</p>
  {{Session::forget('message')}}
@endif

我尝试通过刷新页面来转储会话。我不知道为什么会话数据中仍然存在“消息”。帮我解决这个问题

【问题讨论】:

    标签: session laravel-5.1


    【解决方案1】:

    使用 with() 存储在会话中的数据(闪存数据)将仅在下一个 Http 请求时可用,然后将被删除。这意味着您甚至不必将{{Session::forget('message')}} 添加到您的代码中。

    Entrust 包使用Route::filter(在routeNeedsPermission 和其他函数中),自Laravel 5.1 起已弃用。

    可能是您的重定向未按预期方式处理。

    【讨论】:

    • 我同意第一个,即闪存数据。第二个很有趣。仍然想解决它,
    • 当你调用 Redirect::to('dashboard/')->with('message', 'You Dont have peremissions..');不在委托函数调用之内,而是在它之外?
    • 感谢您的快速回复。截至目前,路由正在重定向到仪表板,之后它会显示消息,当我再次在仪表板中出现相同的消息时。
    • 你的会话驱动是什么?
    • 顺便说一下你应该运行 php artisan route:clear 如果你优化了它们
    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2021-07-19
    • 2016-05-27
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多