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
php 引用(&amp;)详解
Nov 20 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
php实现阳历阴历互转的方法
Oct 28 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
php实现网页端验证码功能
Jul 11 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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.ini中文版(2)
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
浅谈json_encode用法
2015/03/05 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
下载糗事百科的内容_python版
2008/12/07 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
python 实现生成均匀分布的点
2019/12/05 Python
Python线程threading模块用法详解
2020/02/26 Python
animation和transition的区别
2020/10/12 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
幼儿园教师获奖感言
2014/03/11 职场文书
授权委托书样本
2014/09/25 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电