我可以在Laravel中同时拥有网络和api守卫吗?

时间:2017-02-09 14:48:29

标签: php laravel

到目前为止,我只在网站上使用API​​(用于AJAX请求),所以我应用了web中间件,但我将使用相同的方法和路线构建移动应用程序。
我尝试在auth:api路由上使用\api\中间件,但它强制我在每个请求中使用令牌。
有没有办法区分使用哪种身份验证然后应用适当的中间件?

1 个答案:

答案 0 :(得分:0)

是的,您可以通过不同的URL将不同的中间件应用于相同的控制器/路由。

假设Laravel 5.4,然后在RouteServiceProvider.php

的某个地方
Route::middleware('web')
     ->namespace($this->namespace)
     ->group(base_path('routes/web.php'));

Route::prefix('api')
     ->middleware(['auth:api', 'web'])
     ->namespace($this->namespace)
     ->group(base_path('routes/web.php'));

请注意,两个路由组都具有相同的路由文件和相同的命名空间,但第二个路由组具有不同的middlewar和URL前缀。