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