token为空,没办法抛出异常?

来源:6-8 为gateway增加登录校验拦截器

慕神4535282

2023-08-22

+        if (token == null || token.isEmpty()) {
+            LOG.info( "token为空,请求被拦截" );
+            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
+            // 老师,可以在此设置或是在别的地方设置一下CommonResp后再返回给前端吗?我
+            // 试了,通过 exchange 没办法set进来CommonResp,请问一下要怎么做,麻烦给个例子,谢谢!
+            return exchange.getResponse().setComplete();
+        }

老师您之前解答说:
可以试试抛异常,由controller的统一异常处理来返回CommonResp

但是这个是gateway模块,没有controller,也没有包含统一返回类型 ------ CommonResp,这些异常的类型等都定义在 common 模块中,而 gateway 模块是不包含这个 common 模块的,我试了强行包含进去,也写了类似 throw new BusinessException(BusinessExceptionEnum.MEMBER_MOBILE_EXIST); 这样的抛出异常,结果 gateway 都启动不了。
请问老师,登录拦截 只能 exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); 这样来处理吗? 就不能抛出异常,在统一返回类型 ------ CommonResp 中指定错误码吗?
谢谢老师的解答~~~

写回答

1回答

甲蛙

2023-08-23

在gateway的话,是返回401来处理的。在业务模块才用CommonResp

0
2
甲蛙
回复
慕神4535282
可以,那就不是Filter了,可以写过滤器
2023-08-28
共2条回复

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 511 问题

查看课程