Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试获取非对象Laravel Auth的属性_Laravel_Authentication_Laravel 5_Logout - Fatal编程技术网

尝试获取非对象Laravel Auth的属性

尝试获取非对象Laravel Auth的属性,laravel,authentication,laravel-5,logout,Laravel,Authentication,Laravel 5,Logout,编辑:我现在正在测试它,非常奇怪,有时它可以工作,有时它会给我错误 我有一个应用程序,我覆盖了Laravel中的注销函数,所以我在我的AuthController.php public function getLogout() { $userid = Auth::user()->id; date_default_timezone_set('Asia/Taipei'); $today = date('Y-m-d'); $logHour = new Log

编辑:我现在正在测试它,非常奇怪,有时它可以工作,有时它会给我错误

我有一个应用程序,我覆盖了Laravel中的注销函数,所以我在我的
AuthController.php

public function getLogout()
{

    $userid = Auth::user()->id;

    date_default_timezone_set('Asia/Taipei');

    $today = date('Y-m-d');
    $logHour = new LoginHour();
    $checkLogin = $logHour->checkLoginHoursOut(intval($userid), $today);

    if($checkLogin != null)
    {
        $loginhours = '';
        $timestamp = date('Y-m-d h:i:s');
        $timestamp2 = strtotime($timestamp);

        $userLastLogin = $checkLogin[0]->timestamp;
        $userLastLogin2 = strtotime($userLastLogin);

        // Get difference in hours
        $diffHours = round(($timestamp2 - $userLastLogin2) / 3600, 2);


        LoginHour::where('date', '=', $today)->
                    where('user_id', '=', $userid)->
                    update(['loginhours' => $checkLogin[0]->loginhours + $diffHours, 'status' => 0, 'timestamp' => $timestamp]);
    }                    

    Auth::logout();

    return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/auth/login');
}
但由于某些原因,当我尝试注销时,我出现了以下错误:

Trying to get property of non-object
这让我想到了这条线

$userid = Auth::user()->id;

有什么问题吗?我相信我仍然可以访问Auth,因为我还没有调用
Auth::logout()在那一行之前?

我想当您在没有登录用户的情况下访问
注销路径时,问题就存在了

所以,你应该在顶部检查它

public function getLogout()
{
     if (Auth::guest()) return;

     ...
}

我猜当您在没有登录用户的情况下访问
注销
路径时,问题就存在了

所以,你应该在顶部检查它

public function getLogout()
{
     if (Auth::guest()) return;

     ...
}

你访问时总是经过身份验证吗?@Jeemusu我所做的是登录然后注销,我不知道为什么我刚成功登录时没有经过身份验证,然后尝试注销会出现错误。请尝试在其他经过身份验证的路由上访问Auth::user()以调试它。可能值得将中间件应用于您的注销路由,以便未经授权的用户无法访问它。注销后重定向设置为什么?您是否已将“身份验证”中间件应用于此功能。只是问一下,因为你明确地做了这个1。你访问它时总是经过身份验证吗?@Jeemusu我做的是登录然后注销,我不知道为什么我刚成功登录时没有经过身份验证,然后尝试注销会出现错误。试着在其他经过身份验证的路由上访问Auth::user()来调试它。可能值得将中间件应用于您的注销路由,以便未经授权的用户无法访问它。注销后重定向设置为什么?您是否已将“身份验证”中间件应用于此功能。只是问一下,因为你已经明确提出了这个1。如果我登录然后注销并出现错误,我怎么可能在没有登录用户的情况下访问注销路径?如果我登录然后注销并出现错误,我怎么可能在没有登录用户的情况下访问注销路径?