2016-08-06 6 views
0

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ですか?私はどこにでもいて、経路やミドルウェアのグループを変更しましたが、それはうまくいきませんでした。前もって感謝します!

+0

イベントは、セッションライフサイクルの一部ではありません。イベントの認証ステータスを確認する必要がある場合、本当にイベントではありません。 –

+0

@JoelHinzが答えに感謝します!それはルートファイルの認証ステータスをチェックしないでください。 – Markinson

+0

私は一般にルートファイルに認証チェックを置くのではなく、ミドルウェア、コントローラーなどに置いておきます。しかし確かに可能ですので、すべてあなたの特定のアプリケーションに依存します。 –

答えて

0

あなたのアプリケーションにどのようにログインしていますか? kernel.phpミドルウェアファイルに$ midleware varにのみ使用しているauthetication midlewareを追加することをお勧めします。

0

あなたがApp\Listenersにいるので、名前空間のようだと思われますので、App\Listeners\Authを使ってみてください。試してみてください:あなたのファイルの上に

dd(\Auth::check());

またはuse Auth;を。

関連する問題