请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

+        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 中指定错误码吗?
谢谢老师的解答~~~

正在回答 回答被采纳积分+3

1回答

甲蛙 2023-08-23 15:24:31

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕神4535282 #1
    那这个LoginMemberFilter 可以不放到 gateway 模块中, 转而放到 各个业务模块 中吗?然后使用
    
    throw new BusinessException(BusinessExceptionEnum.BUSINESS_STATION_NAME_UNIQUE_ERROR);
    
    取代现在的
    exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
    return exchange.getResponse().setComplete();
    回复 有任何疑惑可以回复我~ 2023-08-24 17:55:55
  • 甲蛙 回复 提问者 慕神4535282 #2
    可以,那就不是Filter了,可以写过滤器
    回复 有任何疑惑可以回复我~ 2023-08-28 16:49:59
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号