项目中使用到了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模型增加

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

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. Golang: 解析JSON数据之二

    上次我们介绍了 Go 语言中序列化和反序列化 JSON 数据的两个方法 Marshal() 和 Unmarshal(),并以示例演示了它们的用法. 我们在例子中看到,需要事先声明好对应的结构体,才能跟 ...

  2. Vue.prototype 全局变量

    有两种都是在main.js声明 第一种 main.js 声明 Vue.config.productionTip = false // mount axios Vue.$http and this.$h ...

  3. saltstack--状态判断unless与onlyif

    saltstack状态判断unless与onlyif 很多时候我们在编写 state 文件时候需要进行判断,判断该目录或文件是否存在,判断该配置是否已经已添加,然后根据判断结果再决定命令或动作是否执行 ...

  4. nginx重试机制proxy_next_upstream

    nginx作为反向代理服务器,后端RS有多台服务器,上层通过一定机制保证容错和负载均衡. nginx的重试机制就是容错的一种 官方链接:http://nginx.org/en/docs/http/ng ...

  5. css3动画 2D 3D transfrom

    2D transform 例如transform: translate(1px,30px); translate() 方法 translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当 ...

  6. 关于TCP/IP

    一.网络模型 计算机网络的两种模型:OSI 模型和 TCP/IP 模型 由于 OSI 模型过于复杂难以实现,导致 TCP/IP 模型更早地应用在现实中,这也使得 TCP/IP 模型成为标准 在 OSI ...

  7. Linux 挂载windows共享文件夹

    Linux 挂载windows共享文件夹 准备工具: 1.windows 共享出来文件夹. 2.Linux 安装cifs文件挂载属性 3.其他 windows ip: 192.168.27.99 Li ...

  8. Unity 渲染教程余下

    可能来源于(英文):https://catlikecoding.com/unity/tutorials/ Unity渲染教程(一):矩阵           http://gad.qq.com/pro ...

  9. 【PHP】系统部署

    1.MySql数据库,单独创建用户和数据库 使用MySql-Front导入,避免使用Navicat导入 2.httpd-vhosts.conf配置 文件位于:D:\Xampp\apache\conf\ ...

  10. NYOJ104-最大和-(前缀和)

    题意:给一个矩阵,每个元素有正有负,求最大矩阵和. 解题: (1)对原矩阵a用前缀和处理,处理变成矩阵sum,sum[i][j]表示从左上角为a[1][1]到右下角a[i][j]的全部元素和. 矩阵必 ...