项目中使用到了laravel5的passport组件,进行前后端分离的 api认证部分:

前后端分离的api认证,我们用的是:

【密码授权令牌】,需要用户登录->指定client_id/client_secret->生成token+refresh_token->返回前端->在xml的header['Auth'] 添加token。

1、官方文档:https://learnku.com/docs/laravel/5.5/passport/1309#personal-access-tokens

2、社区推荐文章:https://learnku.com/articles/6976/laravel-55-uses-passport-to-implement-auth-authentication#reply118969 (推荐)

3、错误解决文章:https://cloud.tencent.com/developer/ask/199607

4、调试参考文章:https://learnku.com/laravel/t/22586  -- postman一步一步来

4、目的,实现前后端分离api的token认证。

5、其实我个人认为 api认证这块没有第三方没必要用passport,jwt或者自定义token都可以,因为passport主要用于oauth2,也就是三方交互,而单纯的前后端分离 只有两方。

6、按照步骤2来基本不会又问题,下面贴几个要点:

1)Guzzle\http的client只能访问网络上【真实】存在的域名或ip:port,本地创建的虚拟域名、127.0.0.1和localhost访问是不行滴

2)username不是users表的username字段,默认是users的email字段,当然你可以修改成username字段,详见下面步骤7

3)已知laravel5.5及以后,users表的password必须是默认的hash::make 加密,不能是bcrypt加密,前台登录时候仅需提供123456类似密码即可,passport内部自动进行hash_check对比。

4)将步骤2中的 /api/oauth/token,修改为 /oauth/token

7、修改passport默认的email认证字段,我们改为username或者任意其他phone都可以,如下:App\User.php模型增加

    /**
* 取消passport默认使用email+password作用验证条件
* @param : $username --- request()->input('username')
* @return : usermodel
* date: 2019年11月27日下午3:02:13
* author: xzz
*/
public function findForPassport($username)
{
$credentials = [];
filter_var($username, FILTER_VALIDATE_EMAIL)?$credentials['email'] = $username:$credentials['username'] = $username; return self::where($credentials)->first();
}

8、demo在laravel5.5的app\http\controllers\PassportController.php里面。

9、效果:

10、验证token,直接使用系统的auth:api中间件进行认证即可。

【laravel5.5+Passport】laravel5的前后端分离之Passport设计的更多相关文章

  1. 前后端分离&接口API设计学习报告

    接口API设计学习报告 15331023 陈康怡 什么是API? API即Application Programming Interface.API是一种通道,负责一个程序与另一个程序的沟通.而对于w ...

  2. laravel5.7 前后端分离开发 实现基于API请求的token认证

    最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...

  3. 前后端分离中,Gulp实现头尾等公共页面的复用

    前言 通常我们所做的一些页面,我们可以从设计图里面看出有一些地方是相同的.例如:头部,底部,侧边栏等等.如果前后端分离时,制作静态页面的同学,对于这些重复的部分只能够通过复制粘贴到新的页面来,如果页面 ...

  4. nodeJS(express4.x)+vue(vue-cli)构建前后端分离详细教程(带跨域)

    好想再回到大学宿舍,当时床虽小,房随小,但是心确是满的 ----致  西安工程大学a-114舍友们 转载请注明出处:水车:http://www.cnblogs.com/xuange306/p/6185 ...

  5. 浅谈WEB前后端分离

    重审业务逻辑 用过MVC的童鞋都知道业务逻辑(Bussiness Logic),但是大多对这概念又是模棱两可,业务逻辑从来都是这样难以理解,谈论前后端分离之前这个概念非常有必要探讨一下! 在简单的CR ...

  6. [转] 前后端分离开发模式的 mock 平台预研

    引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都 ...

  7. 利用gulp解决前后端分离的header/footer引入问题

    在我们进行前后端完全分离的时候,有一个问题一直是挺头疼的,那就是公共header和footer的引入.在传统利用后端渲染的情况下,我们可以把header.footer写成两个单独的模板,然后用后端语言 ...

  8. 前后端分离之前端项目构建(grunt+require+angular)

    前言 前段时间做了一个项目,前端开发页面,然后把代码给到后端同学,后端同学通过vm再来渲染页面.后来才发现,这种方式简直是太low了,因为前端代码在服务端同学那里,每次前端需要更改的时候都需要去到服务 ...

  9. Swagger - 前后端分离后的契约

    前后端分离 按照现在的趋势,前后端分离几乎已经是业界对开发和部署方式所达成的一种共识.所谓的前后端分离,并不是传统行业中的按部门划分,一部分人只做前端(HTML/CSS/JavaScript等等),另 ...

随机推荐

  1. Mac pro操作快捷键

    1. 在Finder顶部显示文件/文件夹全路径 终端里输入:defaults write com.apple.finder _FXShowPosixPathInTitle -bool TRUE;kil ...

  2. jQuery循环之each()

    /** *定义和用法:$(selector).each(function(index,element)) *each()函数会对每个匹配到的元素运行函数(返回false可终止循环). *each()函 ...

  3. 浅谈Python设计模式 - 外观模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 外观模式 外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口 ...

  4. 【Spring Cloud】Spring Cloud之整合Spring Cloud Bus以及最佳实践

    一.整合步骤 1)加入Maven坐标 <!-- actuator监控模块 --> <dependency> <groupId>org.springframework ...

  5. web服务器-apache

    一.apache详解 1. 概述 apache是世界上使用排名第一的web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的web服务器端软件之一.它快 ...

  6. tomcat日志分割

    1.下载(最新版本)并解压,cd进入安装目录 #  wget http://cronolog.org/download/cronolog-1.6.2.tar.gz # tar zxvf cronolo ...

  7. hiveserver2和zookeeper的HA搭建(转)

    最近公司新项目申请资源,虚拟机资源打开时候使用source login.sh的脚本来进行登录注册,好奇心驱使下看了看里面的shell脚本,使用到了hiveserver2的zookeeper连接,百度一 ...

  8. jquery.lazyload.js-v1.9.1延时加载插件,已兼容ie6和各大浏览器

    来源:http://www.jq22.com/jquery-info390 使用前要求: img的设置: 1.class要配上“lazy”: 2.用data-original代替src: 3.如果想要 ...

  9. idea 将java导出为可执行jar及导入jar依赖

    使用maven可以很好的帮助我们进行依赖的管理,也可以使用maven的jar包打包插件构建出可运行的jar.那针对不是用maven进行管理的普通java项目,可以通过以下方式导出可执行的jar包以及导 ...

  10. 彻底掌握网络通信(七)ConnectionReuseStrategy,ConnectionKeepAliveStrategy解析

    网络通信系列文章序 彻底掌握网络通信(一)Http协议基础知识 彻底掌握网络通信(二)Apache的HttpClient基础知识 彻底掌握网络通信(三)Android源码中HttpClient的在不同 ...