采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
问题:
1、是否一定要用Filter实现拦截,用interceptor实现可以吗?
2、为什么login和acl要分开来实现,现在一个filter或者interceptor里不行吗?
你好,从代码实现效果来说,filter和inteceptor都是可以的,只是通常我们可能会在一个项目里定义多个filter但基本只会定义一个interceptor,这时interceptor通常就不会做实际的业务逻辑,而只做一些常规的记录或兜底等操作,作为请求的收尾。但当项目里只有一个filter时,应该说用哪个就可以了。login和acl分开,这个我感觉很容易理解的,一个类只做指定的事情,login只关注登录及登录的操作,acl只做针对登录用户的权限校验操作,当然堆到一个类里是可以的,但是分开的话逻辑会更清晰。之后再有其他逻辑时,也可以单独放到一个新的filter里,而不会出现不停的在一个类里写,导致逻辑越来越臃肿。
主要是,一般系统微服务化以后,权限和sso一般都会独立出去,各个业务系统单独通过rpc去调用,而rpc一般用dubbo,如果放到filter里,就不通过Spring容器管理了,但是dubbo会集成到Spring里,所以放filter不是很奇怪吗?
那也要有一个拦截所有操作的点,对于dubbo而言,依靠的dubbo里的filter,在invoke实际方法之前去检查权限。本质上都是有一个全局拦截点的存在,拦截住实际的调用,在调用前做权限的判断。这种拦截,类似于dubbo这种组件,提供的拦截方式基本也都是filter。不过这不是关键,能拦截住才是关键,至于选择使用什么拦截,根据项目实际情况就可以了。
登录后可查看更多问答,登录/注册
源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术
2.5k 6
2.2k 22
1.4k 20
1.2k 18
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号