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(5) 类和对象
Feb 16 PHP
php 数组的指针操作实现代码
Feb 08 PHP
Apache服务器无法使用的解决方法
May 08 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
php获取域名的google收录示例
Mar 24 PHP
PHP图片裁剪函数(保持图像不变形)
May 04 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 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查询操作实现投票功能
2016/05/09 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python获取标准北京时间的方法
2015/03/24 Python
python实现复制整个目录的方法
2015/05/12 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python实现flappy bird小游戏
2018/12/24 Python
python输入多行字符串的方法总结
2019/07/02 Python
django如何实现视图重定向
2019/07/24 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Python魔术方法专题
2020/06/19 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
旅游业大学生创业计划书
2014/01/31 职场文书
贷款担保书范文
2014/05/13 职场文书
干部个人考察材料
2014/12/24 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书