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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
xiaopi
最佳答案

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

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

4年前 评论
讨论数量: 8
xiaopi

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

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

4年前 评论
ibucoin

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

4年前 评论

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

4年前 评论
codinget

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

4年前 评论
xiaopi

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

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

4年前 评论

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

4年前 评论
不温柔

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

4年前 评论

刚好我也有这个疑问,看了老师们的发言,感觉又学到了点东西,使用dingo可能不用重复造轮子去鉴权了。

4年前 评论
AloneUtopia 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!