2016-09-25 64 views
0

我正在嘗試創建一個laravel 5.3的api,並且我剛創建了一個新的新的Laravel 5.3項目,並且已將以下路由添加到routes/api.php文件中。laravel 5.3 Api路由不返回「未授權訪問」錯誤。

Route::get('/',function(){ 
    return view('welcome'); 
}); 

當我打我的瀏覽器這個網址http://localhost/api/我被導航到我的應用程序的默認laravel主頁。

現在我的問題是,當我嘗試訪問api.php文件中的路由而不傳遞令牌時,是否應該不會收到「未經授權的訪問」錯誤?爲什麼laravel讓我導航到api路線,即使我沒有傳遞令牌?

注意:我還沒有在項目中添加laravel護照或任何其他oAuth庫。

+0

其答案是否對你的工作頁面上的例子嗎? – hogan

+0

是的,就像你說過的,我們必須使用中間件,比如auth或我們自己定製的中間件。謝謝你的幫助。 –

+0

不止歡迎 – hogan

回答

1

不,在定義類似路線時,Laravel不會默認檢查那些路徑。這是一件好事,因爲可能會出現您提供信息而無需用戶發送crsf令牌或進行身份驗證的情況。

你想要的是在你的路線中使用中間件。看看這裏:https://laravel.com/docs/5.3/middleware

這將在特定的路由或路由組中使用指定的中間件,如'auth'。即

Route::group(['middleware' => ['auth']], function() { 

    Route::post('profile', '[email protected]'); 
    .... 
} 

也看到了middlewareGroups「網絡」

+0

中間件'auth'將使用默認警衛,假設名稱未被更改,則需要'auth:api'。 – ollieread

+0

auth:api的作品,我會更進一步,並使用'api'組,然後處理好油門。所有這些在給定的鏈接中都有解釋。該代碼是如何使用它的一個例子。不管怎麼說,還是要謝謝你。 – hogan

+0

我試圖實施「client_credentials_grant」使用護照,這不需要用戶,因此不能使用auth中間件。相反,我發現這個https://github.com/laravel/passport/blob/6b4adcca0b604e163454e1ca63871a516b0b5b48/src/Http/Middleware/CheckClientCredentials.php。對於希望通過護照實施「客戶端憑據授予」的任何人,這是您的解決方案尋找。 –

相關問題