Laravel5.5 api token 用法

教程 shanhuhai 1758℃ 0评论

Laravel api token验证使用方法

从 Laravel 5.2 开始, Laravel 的将路由的配置进行了分拆, 在 routes 目录下有 web.phpapi.php 两个路由的配置。 api.php 中用来放你的api 开放接口, 用作一种无状态的认证机制。

基本上就是通过在 url 的 querystring 中带一个参数 api_token 然后到服务器端用户表中找到此用户。

在Laravel 文档中对这块基本上没有说明。下面来看下实现步骤:

配置步骤

1. 首先要在用户表中添加 api_token 字段

你可以修改Laravel自带的迁移文件

打开 database/migrations/2014_10_12_000000_create_users_table.php
添加 api_token 字段

Schema::create('users', function (Blueprint $table) {
  $table->increments('id');
  $table->string('name');
  $table->string('email')->unique();
  $table->string('password');
  //添加 api_token 字段
  $table->string('api_token', 60)->unique();
  $table->rememberToken();
  $table->timestamps();
});

然后你可以重置并重新运行migration

php artisan migrate:reset
php artisan migrate

2.设置路由

routes/api.php 中设置我们的路由


Route::prefix('v1')->middleware('auth:api')->group(function() { // 取单条数据 Route::get('notes/{id}',function($id){ return Note::select('title', 'content')->find($id); }); });

使用 prefix 方法将 group 中的所有路由规则的url都加上 v1(版本号) 前缀,所以实际的请求地址是 :/api/v1/notes/{id}

middleware 使用 auth:api, :api代表使用的 Guard(看门)类, 在 config/auth.php 中可以看到 api Guard 的驱动设置的是 token, 这表示所有使用了 auth:api 中间路由规则,请求中都必须带 api_token 参数

打开 config/auth.php 配置稍微解释下



'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ],

这个配置表示 默认的 guard 是web,意思是如果直接使用 meddleware('auth') 其实是 meddleware('auth:web')


'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], ],

指名了各个guard所使用的驱动,web的话是sessionapi的话就是 token

修改 app/User.php

添加 api_token 字段


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

如何获取用户信息


Auth::guard('api')->user();

转载请注明:大后端 » Laravel5.5 api token 用法

喜欢 (2)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址