I am trying to use Auth::check()
in an event handler in Laravel 5.2.13. However, when I do dd(Auth::check())
it always returns false even when I'm logged in.
If I dd() in a controller, it does return true and I'm definitely logged in. My code:
<?php namespace App\Listeners;
use App\Userpath;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
class UserEventListener
{
public function onNewPath($event)
{
dd(Auth::check()); // <--- always returns false!!
}
public function subscribe($events)
{
$events->listen(
'App\Events\NewPath',
'App\Listeners\UserEventListener@onNewPath'
);
}
}
my routes
Route::group(['middleware' => 'web'], function () {
...
Route::group(['middleware' => ['termsandconditions', 'auth']], function () {
Event::fire(new NewPath()); //NewPath is just an empty default event
...
My kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
}
How do I get a legit answer if I'm logged in or not? I looked everywhere on SO, changed routes and middleware groups and what not but I can't get it to work. Thanks in advance!
how are you login users into your application ? I recommend you to add the authetication midleware that you are using only to the $midleware var into your kernel.php midleware file.
Seems like the namespace is wrong, since you're in App\Listeners
, so it's try to use App\Listeners\Auth
. Try:
dd(\Auth::check());
or use Auth;
on top of your file.