2015-10-02 1 views
0

J'ai créé un middleware d'authentification pour un projet lumen. L'authentification utilise une API externe, mais à moins que je ne me trompe, ce n'est pas le problème ici. Le middleware me redirige correctement vers la page de connexion si je ne suis pas authentifié, et me connecte correctement et l'enregistre dans la session lorsque je mets de bonnes informations d'identification. Mais il n'affiche pas la page d'accueil interne tant que j'utilise le middleware. La méthode "handle" dans App \ Http \ Middleware \ Authenticate.php semble n'avoir aucune réponse dans $ next ($ request) pour retourner et je ne sais pas pourquoi.Lumen/Laravel - Erreur de middleware d'authentification personnalisée

Si mon implémentation UserProvider ou AuthController est nécessaire, faites-le moi savoir.

Message d'erreur:

ReflectionException in Container.php line 554: Function() does not exist 

in Container.php line 554 
at ReflectionFunction->__construct('') in Container.php line 554 
at Container->getCallReflector(null) in Container.php line 531 
at Container->getMethodDependencies(null, array()) in Container.php line 500 
at Container->call(null, array()) in Application.php line 1286 
at Application->callActionOnArrayBasedRoute(array(true, array('middleware' => 'bankerAuth'), array())) in Application.php line 1255 
at Application->Laravel\Lumen\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Authenticate.php line 44 
at Authenticate->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Application.php line 1411 
at Application->sendThroughPipeline(array('App\Http\Middleware\Authenticate'), object(Closure)) in Application.php line 1256 
at Application->handleFoundRoute(array(true, array('middleware' => 'bankerAuth'), array())) in Application.php line 1179 
at Application->Laravel\Lumen\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62 
at StartSession->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Application.php line 1411 
at Application->sendThroughPipeline(array('Illuminate\Cookie\Middleware\EncryptCookies', 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 'Illuminate\Session\Middleware\StartSession', 'Illuminate\View\Middleware\ShareErrorsFromSession'), object(Closure)) in Application.php line 1185 
at Application->dispatch(null) in Application.php line 1125 
at Application->run() in index.php line 28 

Code pertinent:

.env

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=database 
AUTH_DRIVER=bankerAuth 

app.php

$app->middleware([ 
    Illuminate\Cookie\Middleware\EncryptCookies::class, 
    Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    Illuminate\Session\Middleware\StartSession::class, 
    Illuminate\View\Middleware\ShareErrorsFromSession::class, 
]); 

$app->routeMiddleware([ 
    'bankerAuth' => \App\Http\Middleware\Authenticate::class, 
// 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class 
]); 

$app['auth']->extend('bankerAuth', function() 
{ 
    return new App\Banker\BankerUserProvider; 
}); 

routes.php

$app->get('/', ['middleware' => 'bankerAuth'], function() use ($app) { 
    return 'Home page'; 
}); 


$app->get('/login', function() { 

    return view('login'); 
}); 


$app->post('/login', ['uses' => '[email protected]'], function() { 

}); 

App \ Http \ Middleware \ Authenticate.php

<?php 


namespace App\Http\Middleware; 


use Closure; 
use Illuminate\Contracts\Auth\Guard; 

class Authenticate 
{ 
    /** 
    * The Guard implementation. 
    * 
    * @var Guard 
    */ 
    protected $auth; 

    /** 
    * Create a new filter instance. 
    * 
    * @param Guard $auth 
    * @return void 
    */ 
    public function __construct(Guard $auth) 
    { 
     $this->auth = $auth; 
    } 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if ($this->auth->guest()) { 
      session()->flash('url.intended', app('url')->full()); 
      return redirect()->to('/login', 302); 
     } 

     return $next($request); 
    } 
} 

Répondre

-2

Testé et absolument travailler. J'ai ajouté ceci dans mon dossier dir/app/Http/routes.php.

$app->get('/', function() use ($app) {
return $app->welcome(); });

$app->get('/home', function() use ($app) { return "Welcome to Homepage"; });

+1

Je ne suis pas vraiment sûr de savoir comment cela répond à la question? – ajshort