前后端分离为什么推荐使用 dingo 或者 passport 这些包?

我的问题是:
前后端分离,我只要把适当的资源返回给前端就ok了,那么我用laravel自身的功能(不去安装dingo这些包)同样也可以实现吧?response()->json(['data' => $data], 200); 不也能很好的将想要组装的格式返回吗?那么要 dingo 或者 passport 这些包的意义在哪里?

aaromcoding
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
xiaopi
最佳答案

前后端分离实际上和dingo和passport没什么关系。
1.主要是如何存储用户的登录凭证。如果是浏览器登录的话,那完全可以使用session存储登录凭证,所以这里就没有passport什么事,当然你可以使用dingo规划接口,以及灵活的切换接口版本。
2.如果是api请求连接,注意这里没有浏览器什么事,比如微信小程序接口。无法使用服务端的session,那需要用到令牌授权,通俗地说,就是每次请求都需要带上一个令牌(token),接口端每次都需要验证这个令牌是哪个用户,从而操作数据。这个时候passport或者jwt-auth 就派上用场了,这俩个扩展可以很好的生成token/验证token,甚至是设置token有效期。 这种情况依然可以使用dingo规范返回接口。

综上只是通俗的说。其实和浏览器没有关系,只是和用户有关系,任何情况下,如果用户不属于当前应用,但是需要认证用户,都可以用passport去认证。 比如腾讯的第三方登录,其实也是oauth2.0的认证的一种

1个月前 评论
讨论数量: 7
ibucoin

passport和jwt是为了解决鉴权的问题,当前你如果自己写加密token也可以。
另外使用dingo或者ApiResource的话,是为了更好辅助开发,比如格式化输出,拼接资源输出,你不用也可以。

1个月前 评论
linxb

这就是轮子问题,当你问别人前后分离用什么做鉴权的时候,别人肯定是给你推荐市场上好用的流行的轮子,至于你是用轮子还是自己造轮子,那就依照自身情况而定了

1个月前 评论
codinget

如果是纯开放式的 API,完全不涉及用户授权和客户端授权的话,用 response()->json(['data' => $data], 200) 这种方式就足够了,只要把返回的数据自己封装好,返回的状态码也定义好,不用 API Resource 一点关系都没有,当应用场景涉及到授权的问题,返回的数据越来越复杂时,就需要passport 网络授权辅助开发包和数据转化层 API Resource 了。

1个月前 评论
xiaopi

前后端分离实际上和dingo和passport没什么关系。
1.主要是如何存储用户的登录凭证。如果是浏览器登录的话,那完全可以使用session存储登录凭证,所以这里就没有passport什么事,当然你可以使用dingo规划接口,以及灵活的切换接口版本。
2.如果是api请求连接,注意这里没有浏览器什么事,比如微信小程序接口。无法使用服务端的session,那需要用到令牌授权,通俗地说,就是每次请求都需要带上一个令牌(token),接口端每次都需要验证这个令牌是哪个用户,从而操作数据。这个时候passport或者jwt-auth 就派上用场了,这俩个扩展可以很好的生成token/验证token,甚至是设置token有效期。 这种情况依然可以使用dingo规范返回接口。

综上只是通俗的说。其实和浏览器没有关系,只是和用户有关系,任何情况下,如果用户不属于当前应用,但是需要认证用户,都可以用passport去认证。 比如腾讯的第三方登录,其实也是oauth2.0的认证的一种

1个月前 评论
Nick

只是推荐,用不用最终还是取决于开发者,我就没用这些库,认证通过生成唯一 token 存 redis 并设置过期时间

1个月前 评论
不温柔

工程化,系统化,标准化,如果只是自己做一个玩具,那怎么方便怎么来都是可以的。但工作中用到的这些轮子都是经过大牛们特意定制化的,能统一开发标准当然是好了

1个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会