我嘗試使用Laravel 5.3的Auth腳手架包括api路由。我想爲api後衛使用會話驅動程序,但顯然這沒有任何影響。在用有效用戶登錄應用程序(所以我從/login
到/home
)之後,我嘗試輸入路徑/api/user
,但它總是將我重定向到/home
。 RedirectIfAuthenticated
中間件重定向用戶。基於Laravel會話的auth:api中間件不工作
下面是我嘗試和測試應用程序的快速概覽:
// In "app\Http\Middleware\RedirectIfAuthenticated.php"
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
$guard
爲空,而如果是真正的瀏覽到/api/user
時。
// In "config\auth.php"
'api' => [
'driver' => 'session', // changed from token to session
'provider' => 'users',
],
我將api衛士的驅動程序更改爲session
。
// In "app\Http\Kernel.php"
'api' => [
'throttle:60,1',
'bindings',
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
],
我加入了中間件支持cookies在API中間件
// In "routes\api.php"
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');
這是配備了一個新的Laravel安裝的例子。
// In "app\Providers\RouteServiceProvider.php"
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
的api
中間件應用到在api.php
文件中定義的所有路由。
我希望能夠在用戶登錄後查詢我的API,而不使用令牌等。我用Laravel 5.2編寫的應用程序具有基本相同的路由,但只有web
中間件組和中間件應用於它。在Laravel 5.3中,添加auth
中間件會導致所描述的問題。
編輯:隨着我的配置我試過如下:
// In "routes\web.php"
Route::get('/test', function (Request $request) {
return "test";
})->middleware(['auth']);
這工作完全正常,但是這不,雖然web
和api
後衛是完全auth.php
中的一樣。
Route::get('/test', function (Request $request) {
return "test";
})->middleware(['auth:api']);
您是否找到解決方案? – Notflip
不,我現在只在api路由組中使用'auth'。無法弄清楚爲什麼它不會工作... – Johannes
@Notflip fyi:http://stackoverflow.com/questions/40040226/route-not-found-after-adding-authapi-middleware-laravel-5-3 – Johannes