Laravel API Token

本文介绍了在 Laravel 项目中如何使用 API Token 驱动进行身份验证。内容包括向数据库添加 api_token 字段的迁移操作,用户注册时生成 token 的逻辑,以及在前后端未分离情况下,设置和使用 'auth:api' 中间件进行接口调用的详细步骤。通过在请求头添加 'Authorization' 字段,确保 API 调用的安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Laravel API 默认驱动为 token,可查看config/auth.php。

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],

我们来看看如何在项目中使用吧

 1. 先给数据库中加一个字段:

    1.1 项目下执行命令 php artisan make:migration update_users_table_add_api_token --table=users 生成迁移文件.

    1.2 然后修改迁移文件

Schema::table('users', function (Blueprint $table) {
    $table->string('api_token', 64)->after('password')
          ->unique()
          ->nullable()
          ->default(null);
});

    1.3 然后修改模型

        添加 api_token 到 User 模型 $fillable 属性

protected $fillable = [
    'name', 'email', 'password','api_token',
];

2. 用户注册时生成api_token

   代码放在注册控制器 app/Http/Controllers/Auth/RegisterController.php 里面。

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'api_token' =>Str::random(60)   //use Illuminate\Support\Str;
    ]);
}

这时,如果注册用户,会自动生成api_token。

3. 使用

    我这里的使用是前后端未分离,但也单独设置了api的路由。不喜勿喷~

    如果在routes/api.php 中配置的路由加上 中间件 'middleware' => 'auth:api' ,发现接口调用时都过不了。设置方式如下:

    先在app.blade.php 中加入

<script>
    window.Laravel = {!! json_encode([
            'csrfToken' => csrf_token(),
        ]) !!};

    Laravel.apiToken = "{{ Auth::check() ? 'Bearer '.Auth::user()->api_token : 'Bearer ' }}";
</script>

    然后再对应页面中ajax请求处对应的headers中加入  'Authorization':Laravel.apiToken 

   这样访问就可以了,如果是前后端分离的,也是在对应请求的header中加上   'Authorization': apiToken 就可以了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值