Skip to main content

Middleware

You can apply middleware to services or individual methods using attributes, similar to Laravel's controller middleware.

Global Middleware

Apply middleware to an entire service class:

use Grpcavel\Attributes\GrpcService;
use Grpcavel\Attributes\Middleware;
use App\Grpc\Middleware\Authenticate;

#[GrpcService]
#[Middleware(Authenticate::class)]
class SecureService
{
// All methods in this service will use the Authenticate middleware
}

Method Middleware

Apply middleware to specific methods:

#[GrpcMethod]
#[Middleware(LogRequest::class)]
public function handle(...) {}

Creating Middleware

Grpcavel middleware works similarly to Laravel middleware but receives a GrpcContext:

namespace App\Grpc\Middleware;

class LogRequest
{
public function handle($request, $next)
{
// Pre-processing
$response = $next($request);
// Post-processing

return $response;
}
}