2017-03-13 33 views
0

所以我有一個API,我一直在開發和一些路線顯然需要一個用戶實例,以便我完全完成服務器上的請求側。Laravel 5.4 Passport限制個人訪問令牌在特定路由上的使用

我想知道的是,有沒有辦法限制laravel中的某些路由,以便它需要一個完整的oauth標記而不是一個個人訪問標記。 目前我能看到過濾出來的唯一方法是添加令牌範圍。但是我寧願避免添加範圍只篩選出使用個人訪問令牌VS客戶端....

思考...

感謝

CITTI

回答

1

那麼按照我的理解,個人訪問令牌與特定用戶一起分配。下面是從docs

一旦你創建了一個個人訪問客戶端,您可以發出使用上的用戶模型實例的createToken方法給定用戶令牌。

個人訪問令牌發出針對特定用戶:

$user = App\User::find(1); 

// Creating a token without scopes... 
$token = $user->createToken('Token Name')->accessToken; 

這樣,你打的是Bearer $token請求到/user路線:

Route::get('/user', function() { 
    return Auth::user(); 
})->middleware('auth:api'); 

和響應是準確的用戶,爲其創建PAT。因此,您需要的僅僅是保護您的路線與auth:api中間件

+0

如果用戶在API服務器上進行身份驗證,將返回經過身份驗證的用戶。 API應該是無狀態的。沒有人可以在技術上登錄,這就是爲什麼你將不得不通過傳遞的令牌來區分... – Citti

+0

好吧@Citti所以當用戶沒有登錄,並嘗試訪問這條路線讓說,通過API請求,然後他得到'未經授權的401'迴應。所以可能是在這種情況下顯示登錄彈出或如此 –

+0

是的,我明白了,但我寧願不要那樣做。我的應用程序可以正確處理兩種情況......如果您想代表用戶採取行動,請創建一個客戶端並通過正常的oauth流程。如果您只需要拉取數據或處理一些不需要用戶操作的創建路由,那麼可以使用個人訪問令牌。我不想做的是添加更多的功能來替代現有的工作流程。我只是想阻止他們根據他們試圖擊中的路線使用其中一個或另一個。路由1接受個人令牌+ oauth | Route2只接受oauth – Citti

相關問題