[英]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.