zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    总结的git操作命令小抄集
    两种方式实现压缩文件或文件夹
    eclipse 中执行 main 函数如何添加参数
    alert()、confirm()和prompt()的区别与用法
    阿里某安全工程师写的明星代码
    在 Linux 环境下报错 java.lang.reflect.InvocationTargetException
    MyBatis学习-SQL 符号篇
    初识IP基础分类、CIDR
    Snort
    Dshell----开源攻击分析框架
  • 原文地址:https://www.cnblogs.com/mouseleo/p/8041687.html
Copyright © 2011-2022 走看看