Search code examples
phplaravel-5session-cookies

Trying to get property 'name' of non-object (View:


Trying to get property 'name' of non-object (View:

I get this error when my session expire .so when you refresh the browser i get this error how can i resolve the problem.

this error occurs in five of my blade.php files .when i am in those blade and refresh the browser i get this error .

<li class="nav-item dropdown nav-user">
    <a class="nav-link nav-user-img" href="#" id="navbarDropdownMenuLink2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><img src="assets/images/avatar-1.jpg" alt="" class="user-avatar-md rounded-circle"></a>
    <div class="dropdown-menu dropdown-menu-right nav-user-dropdown" aria-labelledby="navbarDropdownMenuLink2">
        <div class="nav-user-info">
            <h5 class="mb-0 text-white nav-user-name">
                {{ Auth::user()->name }}
                {{ Auth::user()->email }}
            </h5>
            @csrf
            <span class="status"></span><span class="ml-2">Online</span>
        </div>
        <a class="dropdown-item" href="#"><i class="fas fa-user mr-2"></i>Account</a>
        <a class="dropdown-item" href="#"><i class="fas fa-cog mr-2"></i>Setting</a>
        <a class="dropdown-item" href= "{{ route('logout') }}" ><i class="fas fa-power-off mr-2"></i>Logout</a>
    </div>
</li>

Solution

  • You can check if a user is logged in by using Auth::check()

    So your blade part should look like:

    @if(Auth::check())
        <h5 class="mb-0 text-white nav-user-name">
            {{ Auth::user()->name }}
            {{ Auth::user()->email }}
        </h5>
    @endif
    

    Additionally if the visitor is not supposed to see this blade when he/she is not logged in you can add middle ware to your route

    Route::middleware(['auth'])->group(function () { 
    // your routes here
    });
    

    This will redirect users to the login page when the are not logged in.