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默认安装产生系统漏洞
Oct 09 PHP
支持oicq头像的留言簿(一)
Oct 09 PHP
phpfans留言版用到的install.php
Jan 04 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php单例模式示例分享
Feb 12 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 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
星际实力自我测试
2020/03/04 星际争霸
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
javascript常用函数归纳整理
2014/10/31 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
JS实现骰子3D旋转效果
2019/10/24 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
python中常用的九种预处理方法分享
2016/09/11 Python
Python函数装饰器实现方法详解
2018/12/22 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
tensorflow 环境变量设置方式
2020/02/06 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
QML实现钟表效果
2020/06/02 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
清明节演讲稿
2014/05/27 职场文书
代理人委托书
2014/08/01 职场文书
继承公证书格式
2015/01/26 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL