【问题标题】:Call to a member function setCookie() on null - Laravel 5.8在 null 上调用成员函数 setCookie() - Laravel 5.8
【发布时间】:2020-01-21 18:53:15
【问题描述】:

我不知道为什么我最近只是简单地在页面之间导航。

在 null 上调用成员函数 setCookie()

这就是我的AdminMiddleware中的内容

<?php

namespace App\Http\Middleware;

use App\Article;
use Closure, View, Auth ;
use Illuminate\Contracts\Auth\Guard;

class AdminMiddleware
{
    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ( Auth::user()->type !== "Admin") {
            return View::make('layouts.share.errors.404');
        }

        return $next($request);
    }
}

我在 Laravel 5.8 上。

【问题讨论】:

  • 我做了一个快速研究,找到了这个答案。 :stackoverflow.com/a/48970646/4480164
  • 自从我以 admin 登录后,我突然检查了我的 AdminMiddleware,但那里似乎没有任何问题,我不知道为什么会开始发生这种情况 - 只是 最近 - 只有。
  • 任何关于我应该研究什么的建议将不胜感激!

标签: php laravel laravel-5 laravel-5.8 laravel-middleware


【解决方案1】:

当您以非 Admin 身份登录时会发生错误,因为您在 AdminMiddleware 中返回 View 而不是 Response

替换:

if ( Auth::user()->type !== "Admin") {
    return View::make('layouts.share.errors.404');
}

与:

if ( Auth::user()->type !== "Admin") {
    return response()->view('layouts.share.errors.404', [], 404);
}

【讨论】:

    【解决方案2】:

    扩展@Chin Leung 的答案并正确返回 404 not found 状态码

    if ( Auth::user()->type !== "Admin") {
        return response()->view('layouts.share.errors.404', [], 404);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2016-06-29
      • 2018-04-03
      • 2021-10-06
      • 2019-06-17
      相关资源
      最近更新 更多