Auth::check()
をLaravel 5.2.13のイベントハンドラで使用しようとしています。私はdd(Auth::check())
を行うときしかし、それは常に私がログインしていた場合でもfalseを返すイベントハンドラAuth :: check()はfalseを返します
私はコントローラに()をddをした場合、それはtrueを返しないと私は間違いなくログインしてる私のコード:。。
<?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\[email protected]'
);
}
}
私は合法的なAを取得するにはどうすればよい
私のルート
Route::group(['middleware' => 'web'], function() {
...
Route::group(['middleware' => ['termsandconditions', 'auth']], function() {
Event::fire(new NewPath()); //NewPath is just an empty default event
...
マイ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,
];
}
私がログインしているかどうかはnswerですか?私はどこにでもいて、経路やミドルウェアのグループを変更しましたが、それはうまくいきませんでした。前もって感謝します!
イベントは、セッションライフサイクルの一部ではありません。イベントの認証ステータスを確認する必要がある場合、本当にイベントではありません。 –
@JoelHinzが答えに感謝します!それはルートファイルの認証ステータスをチェックしないでください。 – Markinson
私は一般にルートファイルに認証チェックを置くのではなく、ミドルウェア、コントローラーなどに置いておきます。しかし確かに可能ですので、すべてあなたの特定のアプリケーションに依存します。 –