Laravel 5.5 Api

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();

转载于:https://www.cnblogs.com/mouseleo/p/8041687.html

你可能感兴趣的:(Laravel 5.5 Api)