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
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 PHP
php 结果集的分页实现代码
Mar 10 PHP
PHP下常用正则表达式整理
Oct 26 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
Mar 20 PHP
php bootstrap实现简单登录
Mar 08 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
laravel 执行迁移回滚示例
Oct 23 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 PHP
php7 错误处理机制修改实例分析
May 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
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
Yii分页用法实例详解
2014/12/04 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
javascript dom 基本操作小结
2010/04/11 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
远程调用的原理
2014/07/05 面试题
应届生求职信
2014/05/31 职场文书
弄虚作假心得体会
2014/09/10 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
Python函数对象与闭包函数
2022/04/13 Python
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android