【问题标题】:Does not work view function in middleware on laravel 5.1在 laravel 5.1 的中间件中不能使用视图功能
【发布时间】:2016-04-10 06:10:05
【问题描述】:

我有这样的中间件:

public function handle($request, Closure $next)
{
    if(Request::segment(1)=='test'){
        return $next($request);
    }else{
        Auth::logout();
        Session::flush();
       return view  ('login')->with(['flag'=>1]);
     }
}

return view ('dashboard'); 不显示登录页面和
告诉我这个错误

VerifyCsrfToken.php 第 101 行中的 FatalErrorException:
在非对象上调用成员函数 setCookie()

Phpstorme 高亮视图和工具提示有此消息

未定义函数查看更多...(ctrl+f1)

当我使用这个命令时

return redirect()->guest('auth/login');

它重定向到登录页面,但我想将标志传递给登录页面

【问题讨论】:

  • 尝试消除view('login')->with(['flag'=>1]); 之间的差距。删除间隙后应该可以正常工作,因此请创建return view('login')->with(['flag'=>1]); 行,然后在本地服务器上对其进行测试。
  • 我消除了差距,但没有工作
  • 在您的服务器上运行此程序时是否遇到错误?如果你做它说什么?您是否在您的.env 中将APP_DEBUG 设置为true。当你说它不起作用时,你需要具体说明 - 实际发生了什么?
  • “不起作用”是什么意思?请描述实际和预期的行为

标签: php laravel-5.1 middleware laravel-middleware


【解决方案1】:

我正在寻找类似问题的解决方案。

我的意图是当用户尝试从中间件访问一些经过身份验证的 url(比如http://localhost/my-site/admin/user/profile)时返回登录页面视图(但不重定向到登录页面)。

下面的代码 sn-p 解决了我的问题

将此添加到您的命名空间

use Illuminate\Http\Response;

并在中间件的handle方法中使用如下return语句

return new Response(view('user/login'));

【讨论】:

    【解决方案2】:

    如果你想将标志传递给登录页面。你可以试试这个:

    return redirect()->guest('auth/login')->with('flag','1');
    

    【讨论】:

    • 这段代码创建会话。我不想使用会话
    【解决方案3】:

    尝试将{!! csrf_field() !!} 放入您的表单中,如下所示:

    ...
    {!! csrf_field() !!}                
    <div class="form-group">                   
    <label>Name</label>
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2016-10-12
      • 2022-01-22
      • 2015-12-08
      相关资源
      最近更新 更多