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 相关文章推荐
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php字符串函数学习之substr()
Mar 27 PHP
10条php编程小技巧
Jul 07 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 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
长波知识介绍
2021/03/01 无线电
让你的网站首页自动选择语言转跳
2006/12/06 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
WebPack基础知识详解
2017/01/16 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
js实现随机点名程序
2020/09/17 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python微信库:itchat的用法详解
2017/08/14 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
python 消费 kafka 数据教程
2019/12/21 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
大二自我鉴定范文
2013/10/05 职场文书
自荐信结尾
2013/10/27 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
返乡农民工证明
2015/06/24 职场文书
通讯稿范文
2015/07/22 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL