菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
3440
0

使用总结:Laravel 的 passport 密码授权模式完成 API 认证

原创
05/13 14:22
阅读数 1891

laravel的passport章节,我看文档没看懂,因为laravel文档只有安装步骤,没有解释语句,而我当时还停留在古老的mvc世界里,完全不明白来龙去脉。然后搜了jwt和passport相关资料

博客:Laravel 使用 JWT 实现 API Auth, 打造用户授权接口
https://www.cnblogs.com/binyue/p/4812798.h...
http://laravelacademy.org/post/3640.html
博客:Laravel5.3 Passport API 认证 密码模式使用

捣鼓了一下,下面是个人使用总结。

总结:

以前mvc模式里是用cookie+session,$session['user_id']来完成用户登录认证的,
现在流行前后端完全分离,后端程序只提供api,前端调用api获取数据自己去渲染页面。

而这种前后端分离项目往往是通过jwt,即storage或cookie+token的方式,去完成api认证。

jwt的api用户认证流程大致是:

  • 客户端(如前后端分离模式下的前端项目,或者仅仅是个postman)提供用户帐号密码请求服务端(前后端分离模式下的后端api应用,如laravel项目)
  • 通过帐号密码验证,返回给客户端token(该token包含有用户信息)
  • 客户端接受,并保存token在cookie或者storage里,服务端不需要保存
  • 在随后的接口请求中,客户端都在http请求头中携带上token.
  • 服务器再验证这个token,通过就让客户端得到访问的接口的资源,不通过那就报错。这里一般用中间件实现,正好运行时间在控制器也就是接口前面

而laravel中用passport,去完成api认证,
我的理解是,passport方式的api认证流程上是类似jwt方式的,只不过token改用了oauth2的token令牌,不用jwt那套token生成方法,
换句话说只是得到了一个更安全的token。

passport有几种模式,对应着oauth2的那几种模式,
在前端后端分离项目中,是自己的前端应用去取自己的后端api应用的资源,最合适的就是密码模式,原因见文档:

OAuth2密码授权机制可以让自有应用基于邮箱地址(用户名)和密码获取访问令牌,自有应用比如你的手机客户端。这样就允许自由应用无需跳转步骤即可通过整个OAuth2的授权过程。

把oauth2用于这种前后端分离项目的api认证,本来我觉得两者是风马牛不相及的。
想了下,两者类似。
oauth2是“客户端”这个角色,从“服务端”这个角色比如腾讯,取用户qq帐号资源,
而前后端分离项目里,是前端项目(“客户端”角色)从后端项目(“服务端”角色)取资源。

发表评论

0/200
3440 点赞
0 评论
收藏
为你推荐 换一批