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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
PHP 类型转换函数intval
Jun 20 PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 PHP
php强制更新图片缓存的方法
Feb 11 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
微信支付开发发货通知实例
Jul 12 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP children()函数讲解
Feb 03 PHP
php去除deprecated的实例方法
Nov 17 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
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
php实用代码片段整理
2016/11/12 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
jQuery操作cookie
2016/08/08 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
python -v 报错问题的解决方法
2020/09/15 Python
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
安全生产管理合理化建议书
2014/03/12 职场文书
学习之星事迹材料
2014/05/17 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
golang生成并解析JSON
2022/04/14 Golang
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers