在构建基于订阅的应用程序时,您通常需要限制对某些路由的访问,仅限于拥有有效订阅的用户。例如,您可能不希望允许用户在未订阅计费计划的情况下创建项目。为此,Spark 提供了一个方便的订阅验证 中间件,您可以将其分配到应用程序的路由。
如果您的应用程序使用 Laravel 11 简化的应用程序结构,该结构在 bootstrap/app.php
文件中配置中间件,那么 Spark 的订阅验证中间件别名会自动为您在内部注册。但是,如果您使用的应用程序结构没有利用 bootstrap/app.php
文件进行中间件配置,则可能需要在应用程序的 App\Http\Kernel
类中手动注册 subscribed
中间件别名。
use Spark\Http\Middleware\VerifyBillableIsSubscribed;
protected $middlewareAliases = [
// ...
'subscribed' => VerifyBillableIsSubscribed::class
];
然后,您可以将subscribed
中间件附加到应用程序的任何路由定义中。
Route::post('/projects', [ProjectController::class, 'store'])
->middleware(['auth', 'subscribed']);
如果用户拥有有效的订阅,请求将继续正常执行。但是,如果用户没有有效的订阅,他们将被重定向到应用程序的 Spark 计费门户。如果请求是 XHR 请求,则会向客户端返回带有 402 HTTP 状态码的响应。
手动检查订阅状态
当然,您始终可以使用Laravel Cashier 提供的方法手动检查可计费模型的订阅状态,这对于验证用户是否订阅了特定计划特别有用。