繁体   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