使用内置的 Laravel 5.2 身份验证并加载 SPA,然后为所有其他路由加载 Dingo API
Posted
技术标签:
【中文标题】使用内置的 Laravel 5.2 身份验证并加载 SPA,然后为所有其他路由加载 Dingo API【英文标题】:Use built in Laravel 5.2 auth and load SPA then Dingo API for all other routes 【发布时间】:2016-06-25 19:16:33 【问题描述】:我正在尝试确定是否可以使用带有刀片/视图的常规 Laravel 身份验证路由进行基本身份验证,然后加载 SPA(带有自己的路由器的 Vue.js)并通过 Dingo 调用 API?
目前我在routes.php
的顶部有这个,它有效:
// All routes through web middleware
Route::group(['middleware' => 'web'], function ()
// Authentication
Route::auth();
// Authenticated routes
Route::group(['middleware' => 'auth'], function ()
// Load main SPA
Route::get('/', 'AppController@spa');
);
);
app.domian.com/
受 Auth 保护,这就是 SPA 使用的路由。我使用标准的内置 Laravel 身份验证页面(非 SPA),因此当用户登录或注册时,它允许访问主路由并加载 SPA。
我想做的是从现在开始使用 Dingo。所以对app.domian.com/api/*
的调用都由Dingo处理。
我已将此添加到相同的路由文件中:
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function($api)
$api->group(['middleware' => 'auth'], function ($api)
// API prefix: api
$api->get('user', function($api)
return Auth::user();
);
);
);
这似乎不起作用。
甚至可以以这种方式使用 Dingo,或者我必须放弃内置的 Auth 以获得 JWT 之类的东西。我希望将来能做到这一点,但现在我只需要让它发挥作用。
【问题讨论】:
【参考方案1】:您需要在中间件中将auth
替换为api.auth
。
$api->group(['middleware' => 'api.auth'], function ($api)
// API prefix: api
$api->get('user', function($api)
return Auth::user();
);
);
【讨论】:
以上是关于使用内置的 Laravel 5.2 身份验证并加载 SPA,然后为所有其他路由加载 Dingo API的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.2 中使用多重身份验证 [关闭]