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

Laravel 5.5 Api的更多相关文章

  1. [Laravel] 14 - REST API: Laravel from scratch

    前言 一.基础 Ref: Build a REST API with Laravel API resources Goto: [Node.js] 08 - Web Server and REST AP ...

  2. Laravel POST请求API接口 使用validate表单验证返回欢迎页

    突然遇到的问题  就是使用Laravel进行开发API接口的时候  发现在表单验证不通过的时候返回了登录页 猜测问题应该是因为表单验证失败后进行了重定向导致的 因为返回状态码200 网上找了好久没找到 ...

  3. 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法

    利用Laravel 搭建oauth2 API接口 要求 laravel 5.4以上 安装 $ composer require laravel/passport 在配置文件 config/app.ph ...

  4. laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效

    laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效 php框架 laravel 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键 ...

  5. laravel使用Dingo\Api通过response()->json()返回空对象

    laravel使用Dingo\Api写接口跟android对接时,android一直反应解析错误,无法解析数据. { "status_code":200, "messag ...

  6. laravel 配置路由 api和web定义的路由的区别详解

    1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware ...

  7. 【转】简单的 Laravel 5 REST API

    Introduction Almost all successful internet based companies have APIs. API is an acronym for Applica ...

  8. [Laravel] 10 - WEB API : wrapper

    前言 一.常用的解决方案 React 前端 + PHP (Laravel) 后端 Such as "some exposure to WEB API’s and/or RESTful“. 使 ...

  9. Laravel 的 JSON API 接口自动化测试

    Laravel 自带了两种测试类型 Feature Test: 功能测试.针对类似接口这种流程性的测试. Unit Test: 单元测试.针对单个函数这种输入输出结果的测试. 新建一个 Feature ...

随机推荐

  1. DOS 批处理命令For循环命令详解

    for命令是一种对一系列对象依次循环执行同一个或多个命令的在命令行或批处理中运行的命令,结合一些Windows管理中的程序后,其处理功能强大.应用灵活方便程度令人刮目相看   for命令是一种对一系列 ...

  2. 4. mybatis实战教程(mybatis in action)之四:实现关联数据的查询

    转自:https://www.cnblogs.com/shanheyongmu/p/5653599.html 有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如 ...

  3. JDK9-模块化系统

    Content 0. 实例 0.1 使用命令行编写和运行模块程序 0.1.1 设置目录 0.1.2 编写源代码 0.1.3 编译 0.1.4 打包模块代码 0.1.5 运行程序 0.2 使用eclip ...

  4. 浅谈实体类为什么要实现Serializable接口?

    序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创 ...

  5. 安装设置IIS5.1

    1.防止不停提示无法复制staxmem.dll: esentutl /p %windir%/security/database/secedit.sdb提示数据库损坏,是否恢复,选是,出现以下提示后退出 ...

  6. gevent 实现单线程下的socket链接

    通过gevent实现socket的多并发 server 端: import geventfrom gevent import socket, monkey monkey.patch_all() #进行 ...

  7. 获取request错误信息

    from: https://stackoverflow.com/questions/19370436/get-errno-from-python-requests-connectionerror 当使 ...

  8. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 处理静态资源

    视频地址:https://www.cctalk.com/v/15114923882788 处理静态资源 无非花开花落,静静. 指定静态资源目录 这里我们使用第三方中间件: koa-static 安装并 ...

  9. 脱离SVN的控制

    在桌面创建一个记事本文件,然后吧这句话复制进去for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn ...

  10. docker 配置远程访问证书验证

    centos7 生成证书 工具:openssl #cd /etc/docker   (docker的证书一般放这) #openssl genrsa -aes256 -passout pass:密码   ...