【问题标题】:VerifyCsrfToken, Auth & Trying to get property of non-objectVerifyCsrfToken, Auth & Trying to get property of non-object
【发布时间】:2019-11-05 21:51:22
【问题描述】:

我要回到一个旧项目,登录时需要访问主页,如果没有,您将被重定向到 /login。为此,我正在使用 Auth 中间件,但这样做时,我收到以下错误(请参阅帖子底部的错误和 imgur 上的完整错误)。

我检查了我的middleware,但实际上没有自定义的,我还检查了我的代码,看看我是否没有使用奇怪的middleware 组或任何东西,我似乎找不到错误暂时。

在我的HomeController.php 中,如果我删除Auth middleware 的使用,脚本将继续(但我还有另一个错误,关于角色和权限,这是正常的)

    public function __construct()
    {
        $this->middleware('auth');
    }

通常,我希望被重定向,但相反,我收到此错误: 试图获取非对象的属性

完全错误: Refer this

我会提到我在每个需要身份验证的页面上都有这个错误,而不是在不需要身份验证的页面上,它不仅限于我的HomeController

谢谢!

编辑: 这是我使用中间件的完整控制器(即使我在其他地方也有问题)

<?php

namespace App\Http\Controllers;

use App\Sinistre;
use App\Appointment;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $sinistres = null;
        if (Auth::user()->hasRole('admin')) {
            $sinistres = Sinistre::all();
        } else {
            $sinistres = Auth::user()->sinistres;
            foreach(Auth::user()->societe AS $societe){
                $sinistres = $sinistres->merge($societe->sinistre);
            }
        }

        $sinistres = $sinistres->unique();

        $appointments = Appointment::orderBy('date_start', 'desc')->with(['sinistre', 'sinistre.user'])->take(8)->get()->reverse();
        return view('pages.home', [
            'sinistres' => $sinistres,
            'appointments' => $appointments,
        ]);
    }
}

【问题讨论】:

  • 你能把你的代码贴在你使用 auth 类的地方吗
  • 我用控制器编辑了原始帖子!
  • 尝试在您的班级上方添加use Auth
  • 我已经有 use Illuminate\Support\Facades\Auth; 但如果我用 use Auth; 替换它,我会得到同样的错误
  • 啊抱歉我错过了 Auth 课程。

标签: php laravel middleware


【解决方案1】:

这可能意味着你没有登录尝试在控制器的索引函数的开头添加这个

    if(Auth::user()){
     //Your Code
    }else{
     return redirect('/');
    }

【讨论】:

  • 我试过了,但从未达到(我什至尝试使用dd('Are we reached ?');,但它没有显示。
  • Auth的登录没有改吗?还是您使用自定义?
  • 你说的是警卫吗?如果是,这是标准的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 2023-02-24
  • 2022-10-19
相关资源
最近更新 更多