前后端分离为什么推荐使用 dingo 或者 passport 这些包?
我的问题是:
前后端分离,我只要把适当的资源返回给前端就ok了,那么我用laravel自身的功能(不去安装dingo这些包)同样也可以实现吧?response()->json(['data' => $data], 200);
不也能很好的将想要组装的格式返回吗?那么要 dingo 或者 passport 这些包的意义在哪里?
前后端分离实际上和dingo和passport没什么关系。
1.主要是如何存储用户的登录凭证。如果是浏览器登录的话,那完全可以使用session存储登录凭证,所以这里就没有passport什么事,当然你可以使用dingo规划接口,以及灵活的切换接口版本。
2.如果是api请求连接,注意这里没有浏览器什么事,比如微信小程序接口。无法使用服务端的session,那需要用到令牌授权,通俗地说,就是每次请求都需要带上一个令牌(token),接口端每次都需要验证这个令牌是哪个用户,从而操作数据。这个时候passport或者jwt-auth 就派上用场了,这俩个扩展可以很好的生成token/验证token,甚至是设置token有效期。 这种情况依然可以使用dingo规范返回接口。
综上只是通俗的说。其实和浏览器没有关系,只是和用户有关系,任何情况下,如果用户不属于当前应用,但是需要认证用户,都可以用passport去认证。 比如腾讯的第三方登录,其实也是oauth2.0的认证的一种