Laravel5.4简单实现app接口Api Token认证方法


Posted in PHP onAugust 29, 2019

我是小白,今天写这篇文章主要是给新手学习看的,大佬就不用看了,有很多不足望大家指出,共同进步。

在开发中许多 API 通常在返回响应之前都需要某种形式的认证,有些时候,一个认证的请求和一个未认证的请求,响应可能不同。

在web项目中,实现认证比较轻松,那么前后端分离的项目中,我们要怎么实现认证,今天这篇文章就以 API token 认证机制,使用Token可以解决laravel API的无状态认证。

一、给用户表users增加api_token字段

php artisan make:migration add_api_token_to_users

首先,给用户表中增加 api_token字段,在生成的迁移文件中添加字段:

<?php
 
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
 
class AddApiTokenToUsers extends Migration
{
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
  Schema::table('users', function (Blueprint $table) {
   $table->string('api_token', 64)->unique();
  });
 }
 
 /**
  * Reverse the migrations.
  *
  * @return void
  */
 public function down()
 {
  Schema::table('users', function (Blueprint $table) {
   $table->dropColumn(['api_token']); //新增加的
  });
 }
}

二、然后使用下面的命令将字段添加到表中:

php artisan migrate

三、用户注册:

在注册的控制器文件的创建用户中添加 api_token 字段:

我这里的控制器是App\Http\Controllers\Api\RegisterController.php

protected function register(Request $request)
 {
  $input = $request->all(); //获取传过来的传数 
 
 //在这里设置生成token后,与账号密码等信息一起存进User表
 
  $user = User::create($data); //存进数据库
 return $token; 
 //这里面的逻辑自己写 我这里只是简单实现
}

最后,不要忘记在 App\User.php用户模型表中的 $fillable 属性当中添加api_token字段:

/**
  * The attributes that are mass assignable.
  *
  * @var array
  */
 protected $fillable = [
  'name', 'email', 'password','confirmation_token','api_token'
 ];

四、修改api driver:

接下来要在config\auth.php 修改如下内容:

'guards' => [
  'web' => [
   'driver' => 'session',
   'provider' => 'users',
  ],
 
  'api' => [
   'driver' => 'token', //把driver设置为token
   'provider' => 'users',
  ],
 ],

五、如何使用:

接下来,我们要添加路由,在routes\api.php文件修改:

Route::group(['middleware' => 'token'], function(){
 Route::post('register', 'API\UserController@register'); 
});

怎么访问?我们这里用postman来测试:

Laravel5.4简单实现app接口Api Token认证方法

到些就大功告成了! 注意,这个只是基础认证,现在开发还是用别人已经开发好的插件好,比如oAuth2,basic,jwt,Passport等等。

哦对了,如果想看token的认证原理,我们可以看他的底层源码

vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php:

Laravel5.4简单实现app接口Api Token认证方法

这个我也看不明白,哈!再见!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
PHP 变量的定义方法
Jan 26 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
php打包压缩文件之ZipArchive方法用法分析
Apr 30 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
Yii框架响应组件用法实例分析
Sep 04 PHP
php集成开发环境详解
Sep 24 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 #PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 #PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 #PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 #PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 #PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 #PHP
PHP命名空间与自动加载机制的基础介绍
Aug 25 #PHP
You might like
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python heapq使用详解及实例代码
2017/01/25 Python
Python自定义简单图轴简单实例
2018/01/08 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
python实现爬山算法的思路详解
2019/04/09 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
超市主管竞聘书
2015/09/15 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
Python学习开发之图形用户界面详解
2021/08/23 Python
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
python blinker 信号库
2022/05/04 Python
LeetCode189轮转数组python示例
2022/08/05 Python