2017-03-11 3 views
0

Ich versuche zu validieren, ob ein Benutzer in einer Richtlinie in Lumen vorhanden ist. Dies ist meine Reglerfunktion:

public function create(Request $request) 
{ 
    $rules = array(
     'content' => 'required|string', 
    ); 
    $user = $request->user(); 
    $this->validate($request, $rules); 
    $this->authorize('create', Card::class); 

Dies ist die Politik:

public function create(User $user) 
{ 
    // As long as the user is real, allowed 
    return $user->id != null; 
} 

Die $ Benutzer innerhalb der Richtlinie erstellen scheint null zu sein. Dies ist der Fehler:

HttpException in Handler.php line 90: 
This action is unauthorized. 
in Handler.php line 90 
at Handler->render(object(Request), object(AuthorizationException)) in Handler.php line 48 
at Handler->render(object(Request), object(AuthorizationException)) in Pipeline.php line 78 
at Pipeline->handleException(object(Request), object(AuthorizationException)) in Pipeline.php line 54 
at Pipeline->Laravel\Lumen\Routing\{closure}(object(Request)) in Authenticate.php line 42 
at Authenticate->handle(object(Request), object(Closure), 'api') in Pipeline.php line 148 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Laravel\Lumen\Routing\{closure}(object(Request)) in Pipeline.php line 102 
at Pipeline->then(object(Closure)) in RoutesRequests.php line 780 
at Application->sendThroughPipeline(array('App\\Http\\Middleware\\Authenticate:api'), object(Closure)) in RoutesRequests.php line 626 
at Application->handleFoundRoute(array(true, array('uses' => 'App\\Http\\Controllers\\[email protected]', 'middleware' => array('auth:api')), array())) in RoutesRequests.php line 528 
at Application->Laravel\Lumen\Concerns\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Laravel\Lumen\Routing\{closure}(object(Request)) in ExampleMiddleware.php line 18 
at ExampleMiddleware->handle(object(Request), object(Closure)) in Pipeline.php line 148 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Laravel\Lumen\Routing\{closure}(object(Request)) in Pipeline.php line 102 
at Pipeline->then(object(Closure)) in RoutesRequests.php line 780 
at Application->sendThroughPipeline(array('App\\Http\\Middleware\\ExampleMiddleware'), object(Closure)) in RoutesRequests.php line 534 
at Application->dispatch(object(Request)) in RoutesRequests.php line 475 
at Application->run(object(Request)) in index.php line 29 

Antwort

1

Ich habe das gleiche Problem.

Aber das Problem ist nichts über die Policy-Klasse.

Dies wird durch Verwendung vollständig qualifizierten Klassennamen in AuthServiceProvider Datei, aufgelöst

Änderung:

Gate::policy(Post::class, PostPolicy::class);

zu:

Gate::policy(\App\Post::class, \App\Policies\PostPolicy::class);

hoffen, dass diese Hilfe.

+0

Oh Mann, vielen Dank. Du hast mir Stunden gespart;) –

Verwandte Themen