簡體   English   中英

Laravel API 令牌認證與 web Route::prefix('api')

[英]Laravel API token authentication vs web Route::prefix('api')

我想知道使用帶有令牌的 API 或帶有前綴的 web 路由器的更好做法是:擁有一個每次用戶登錄時都會更改的令牌。API:

Route::get('userdata/{key}', 'userController@show');

對比

Route::prefix('api')->group(function () {
Route::get('userdata', 'userController@show');
});

在 web 路由器中,我可以使用 cookies 來驗證用戶。

這些哪個更好?

您不需要在路由/正文中使用任何“鍵”或某些字段來獲取已登錄/session 用戶的數據。 您可以創建 static 路由以獲取“自我數據”並根據 header(承載或其他身份驗證)或 cookies 獲取當前用戶數據。

Route::get('userdata', 'userController@show');

帶有cookies/header就可以了。 另外不要忘記使用身份驗證中間件,您應該在其中驗證 cookie/header。

將所有 api 路由分組並應用您的自定義中間件,該中間件將檢查請求標頭中的不記名令牌。 這是如何做到的:

創建中間件:

class AuthenticateWithToken
{
    public function handle($request, Closure $next)
    {
        $token = $request->bearerToken();
        if ($token==='valid') {
            return $next($request);
        }

        throw new Exception();
    }
}

在 App\Http\Kernel.php 中注冊您的中間件:

class Kernel extends HttpKernel
{
    protected $routeMiddleware = [
        'authenticateWithToken' => AuthenticateWithToken::class
    ];
}

在路由上應用中間件:

Route::middleware('authenticateWithToken')
    ->prefix('api')
    ->group(function () {
        Route::get('/route1', 'YourController@action1');
        Route::get('/route2', 'YourController@action2');
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM