我可以在Laravel拥有web和api卫兵吗?

问题描述:

到目前为止,我只从网站使用API​​(对于AJAX reqeusts),所以我申请了web中间件,但我打算使用相同的方法和路由构建移动应用程序。
我试图在\api\路由上使用auth:api中间件,但它迫使我在每个请求中使用令牌。
有什么办法来区分使用哪种认证,然后应用适当的中间件?我可以在Laravel拥有web和api卫兵吗?

+0

请向我们展示您当前使用的代码。 – Jerodev

是的,您可以通过不同的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前缀。