想要实现的需求:
我们使用Yii2.0框架做一个前后端分离的项目,其中使用了中间件(借鉴了Laravel的思想是使用了Yii2.0中的behaviors进行实现,具体实现还没有来得及看,后面看过可以给大家分享一下)判断用户携带了的token是否正确,我们项目中使用了JWT来进行用户判断,当jwt认证失败或者用户没有传过来token的值的时候,中间件抛出异常,我们需要对这个异常进行捕获,返回给前端json类型的参数,否者前端无法进行判断。
那么怎么自定义错误显示呢?
这个时候正确的第一想法首先要去yii2.0的官网中看一下,然而我不是这样做的,我们还有一个项目使用了自定义错误处理,所以我就参考了另一个项目。
描述出现的问题:
另一个项目中完全可以使用,我的项目中参考另外一个项目中的代码和配置无法使用,笑哭了…
遇见这个问题的时候:我们要提醒自己别慌,从头开始分析,一步步解决它。
下面是我们组大神写的自定义错误处理,大致意思判断是否是Ajax请求,如果是返回json信息,如果不是,返回html信息,我们这个文件是放在/app/libary/ErrorAction 这个类继承于 \yii\web\ErrorAction.
但是我的接口一直返回html信息,没有返回json信息,这个时候就有点疑问了,代码都是一样的,为什么另一个项目可以跑,放到自己项目中不可以跑呢?相信大家都遇到过这个问题,那么我们一起来分析分析它吧。