今天使用了laravel的dingoapi插件做了一些功能,但是最后遇到一个问题,我在页面和api的路由组中都加了一个相同的以session为基础的身份验证中间件,然后我以管理员身份登录页面时通过了验证,但是页面的一些数据无法请求到,查看浏览器的network后,发现服务器返回的是身份验证失败,也就是说我通过页面请求可以表明我的身份,异步请求没有表明我的身份,说到底就是请求页面的时候,成功传递了session,异步请求的时候没有成功传递session。
解决方法:
进入appHttpKernel里,将$middlewareGroups中的IlluminateSessionMiddlewareStartSession::class复制到$middleware中。
小知识:api有两类认证模式,一类是用session的,一类是用token的,laravel框架默认没有开启api的session模式,需要自己手动更改。