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);
}
}
Merci Mimo! –