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

随着restful api的普及和应用的广泛使用,越来越多的应用程序需要对api进行身份验证和授权,因此api安全性已成为当今软件开发中极其重要的一个方面。laravel sanctum是laravel 7.0引入的开箱即用的轻量级身份验证系统,它旨在让api身份验证变得简单而安全。在本篇文章中,我们将介绍如何在laravel中使用sanctum来保证api的安全性。

安装Laravel Sanctum

在开始之前,我们需要确认已经安装好Laravel 7.0+版本。然后我们可以使用composer安装Laravel Sanctum依赖:

composer require laravel/sanctum

安装完Sanctum之后,在config/app.php文件中加入以下代码:

'providers' => [    // ...    LaravelSanctumSanctumServiceProvider::class,],'aliases' => [    //...    'Sanctum' => LaravelSanctumSanctum::class,]

这样,Laravel应用程序就已经使用了Sanctum提供的服务和功能。

配置数据库

接下来,在执行数据库迁移之前,我们需要设置Sanctum的数据库表。 Larave lSanctum默认提供了一个包含以下字段的personal_access_tokens数据库表:

id:令牌的唯一标识符tokenable_type:与令牌关联的模型的类名tokenable_id:与令牌关联的模型的IDname:令牌的名称token:API令牌的值abilities:令牌的授权

在创建personal_access_tokens表之前,我们需要先创建模型关系。可以通过在AuthServiceProvider中注册以下内容来完成:

use LaravelSanctumSanctum;//...public function boot(){    $this->registerPolicies();     Sanctum::ignoreMigrations();    Sanctum::actingAs( null, [        'superuser'    ]);}

Sanctum::ignoreMigrations()用于阻止Laravel在artisan migrate命令中执行Sanctum的数据库迁移文件。但是,在大多数情况下,我们只是将其添加到数据库迁移文件的命令中。Sanctum::actingAs()还提供了一种仅用于开发的方法,该方法在没有用户身份验证的情况下模拟用户身份。

然后,我们需要运行以下命令来创建personal_access_tokens表:

php artisan migrate

创建API令牌

Laravel Sanctum为我们提供了两种方式来为API生成令牌。一种是CreateToken方法,该方法可以创建一个或多个包含可选名称和授予权限的API令牌。这里我们介绍第二种方法,即使用hasApiTokens()函数配合createToken()函数:

Blackink AI纹身生成 Blackink AI纹身生成

创建类似纹身的设计,生成独特纹身

Blackink AI纹身生成 17 查看详情 Blackink AI纹身生成

// use the HasApiTokens trait within your User Modeluse LaravelSanctumHasApiTokens;class User extends Authenticatable{    use HasApiTokens, Notifiable;    // ...}// create a Token with User ID and given Abilities$personalAccessToken = $user->createToken('API Token', ['server:get','server:post']);

这里我们在用户模型中使用了HasApiTokensTrait,以便在用户模型中实现API令牌功能。我们使用createToken方法来创建一个API令牌,并在创建令牌时指定了一个可选的名称和授权的权限键。

保护API路由

有了API密钥,我们就可以将其注入到每个请求中以进行身份验证。我们可以在Laravel的路由文件中使用sanctum中间件来保护API路由,以便验证请求中的令牌:

// A Group of API routes that require a valid TokenRoute::group(['middleware' => 'auth:sanctum'], function () {    Route::get('/user', function (Request $request) {        return $request->user();    });});

在这段代码中,我们定义了一个包含验证sanctum中间件的路由组。 路由组中包含一条路由,该路由仅需要一个有效的Token才能访问。

使用Bearer令牌

使用Bearer令牌是通过HTTP Authorization头来发送API令牌的最常见方法。可以通过在请求头中加入Authorization: Bearer {{$personalAccessToken->plainTextToken}}来授权令牌:

curl -H "Authorization: Bearer xxxxx" http://example.com/api/user

撤销API令牌

最后,我们需要了解如何撤销API令牌。我们可以使用tokens()->delete()函数来删除某个用户的所有API令牌,或使用revoke()函数来撤销单个API令牌:

$user->tokens()->delete();$personalAccessToken->revoke();

结束语

现在我们已经成功地实现了Sanctum身份验证来保护我们的API。Sanctum和Laravel提供了简单而强大的API身份验证,这使得开发人员可以专注于构建强大的API,并将主要的关注点放在业务逻辑上。在使用Sanctum时,强烈建议您仔细阅读官方文档,这样您就可以全面了解API的身份验证过程,并确保应用程序具有最高的安全性。

以上就是Laravel开发:如何使用Laravel Sanctum实现API身份验证?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/301044.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
递归冒泡排序:理解参数策略与基线条件优化
上一篇 2026年10月24日 23:02:26
JavaScript适配器模式与接口转换
下一篇 2025年12月21日 01:05:19

相关推荐

发表回复

登录后才能评论
关注微信