【发布时间】:2022-01-11 14:38:18
【问题描述】:
我正在与可以验证状态(已验证电子邮件)的用户一起开发一个 laravel 项目。
另一方面,用户可以拥有由“订阅”中间件验证的订阅。
所以我有几组路线,包括 2 组,其中唯一的区别是是否存在订阅
第一组:
Route::group(['middleware' => ["auth:sanctum", "verified"]], function () {}
第 2 组
Route::group(['middleware' => ["auth:sanctum", "verified", "subscriptions"]], function () {}
我的问题是关于 laravel 用于这些组中的路线的顺序。例如,如果用户满足第一组的所有中间件,laravel 会测试第二组的中间件吗? 已验证的用户是否有机会进入第二组订阅路线?
反之,如果用户没有订阅,则不会通过订阅中间件。但我的印象是用户被订阅中间件重定向失败,而 laravel 可以在没有这个中间件的组中找到正确的路由(组 1)
我想要的是它只是测试是否存在订阅,如果找不到它会在 group1 中查找路由。
代码中组的顺序对处理有影响吗?
谢谢。
编辑:
Route::group(['middleware' => ["auth:sanctum", "verified", ]], function () {
Route::get("/new", function () {
// redirect to payment
})->name("new-payment");
}
Route::group(['middleware' => ["auth:sanctum", "verified", "subscriptions"]], function () {
Route::get("/new", function () {
return view("bourse-new");
})->name("new-abo");
它是相同的路由,但根据订阅的存在与否具有不同的行为 当订阅中间件失败时,它会重定向到“家”,但我希望 laravel 使用第一条路线
【问题讨论】:
-
实际路线是否不同?你能提供例子吗?您也许可以只嵌套您的组/中间件。
-
@Peppermintology 感谢您的关注。我想,如果用户有订阅,他可以创建一个新项目,如果没有,他会被重定向到付款。
-
所以你是说即使
subscriptions中间件返回false组内的路由是可访问的? -
@ManojKiranAppathurai,组内的路由无法访问,但由于“订阅”失败,它重定向到“家”,我只是希望它使用第一组的路由,一个没有这个中间件的
-
否 你不能将相同的 URI 添加到不同的路由
标签: php laravel laravel-5 routes laravel-middleware