您好,欢迎访问一九零五行业门户网

Laravel开发:如何使用Laravel Sanctum实现API身份验证和授权?

laravel是一款流行的php web开发框架,它提供了许多强大的功能和工具来简化web应用程序的开发和维护。laravel sanctum是laravel框架的一个插件,它提供了api身份验证和授权的功能,可以轻松地保护您的api端点免受未经授权的访问。
在本文中,我们将学习如何使用laravel sanctum实现api身份验证和授权。
一、什么是laravel sanctum?
laravel sanctum是一个轻量级的身份验证包,它提供了简单但强大的api身份验证和授权功能。它基于laravel中间件和http认证,允许我们安全地将身份验证令牌附加到api请求中。
laravel sanctum支持两种身份验证方式:基于cookie的身份验证和基于token的身份验证。基于cookie的身份验证使用laravel中间件来验证请求中是否存在有效的认证cookie。另一种验证类header中的token并检查其是否有效。
二、安装laravel sanctum
在开始之前,我们需要先安装laravel sanctum。使用composer包管理器可以轻松地安装laravel sanctum:
composer require laravel/sanctum
当然了,也可以通过在composer.json文件中添加以下要求来手动安装:
{ "require": { "laravel/sanctum": "^2.9" }}
完成后,运行以下命令来发布laravel sanctum配置文件和数据库迁移文件:
php artisan vendor:publish --tag=sanctum-configphp artisan vendor:publish --tag=sanctum-migrationsphp artisan migrate
三、配置laravel sanctum
首先,需要添加laravel / sanctum中间件到您的应用程序的http内核中。修改app/http/kernel.php文件,添加sanctum中间件:
// app/http/kernel.phpprotected $middleware = [ // ... laravelsanctumhttpmiddlewareensurefrontendrequestsarestateful::class,];protected $middlewaregroups = [ 'web' => [ // ... ], 'api' => [ laravelsanctumhttpmiddlewareensurefrontendrequestsarestateful::class, 'throttle:api', illuminateroutingmiddlewaresubstitutebindings::class, ],];
这将确保在每个请求期间都可以使用sanctum的基于cookie的身份验证。
接下来,需要配置auth配置文件。打开config/auth.php文件,找到defaults和guards并将它们配置为使用sanctum。
// config/auth.php'defaults' => [ 'guard' => 'api', 'passwords' => 'users',],'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'sanctum', 'provider' => 'users', 'hash' => false, ],],
这将允许我们使用sanctum进行基于token的身份验证。
添加sanctum提供者。如果您使用的是新版本的laravel,则不需要添加提供者。如果您使用的是旧版本,请打开config/app.php文件并在providers数组中添加以下行:
laravelsanctumsanctumserviceprovider::class,
四、创建授权令牌
现在,我们已经配置了laravel sanctum,接下来我们将了解如何使用sanctum来创建授权令牌。
在用户登录后,在users表中为该用户创建一个api令牌。public function createtoken(request $request){ $user = auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')]); if($user) { $token = $user->createtoken('api token')->plaintexttoken; return response()->json([ 'token' => $token, ]); } else { return response()->json([ 'message' => 'invalid credentials', ], 401); }}
创建令牌后,您可以将其添加到每个请求的authorization标头中。可以在axios请求中如下设置:axios.defaults.headers.common['authorization'] = `bearer ${token}`;
五、实现api身份验证和授权
在创建了授权令牌后,我们可以使用sanctum来保护api端点免受未经授权的访问。我们可以使用laravel路由中间件来检查认证令牌并拒绝未经授权的访问。
首先,在api.php文件中定义受保护的api路由。// routes/api.phproute::middleware('auth:sanctum')->get('/user', function (request $request) { return $request->user();});
此路由将使用sanctum auth中间件保护。
接下来,访问受保护的路由并查看结果。可以通过以下命令进行测试:php artisan serve
现在,可以访问 /api/user 路由以查看已登录的用户的详细信息。现在,如果没有授权标头,将不会能够访问它并返回401未经授权的http状态码。
六、结尾
laravel sanctum是一个强大且易于使用的身份验证和授权解决方案,可以在laravel web应用程序和web api中轻松实现身份验证和授权。它可以轻松地保护您的api端点免受未经授权的访问,并使您可以轻松地控制哪些用户可以访问哪些api端点。在这篇文章中,我们学习了如何安装和配置laravel sanctum,并了解了如何使用它来创建授权令牌和实现api身份验证和授权。
以上就是laravel开发:如何使用laravel sanctum实现api身份验证和授权?的详细内容。
其它类似信息

推荐信息