请稍等 ...
×

采纳答案成功!

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

关于权限拦截的问题

问题:

1、是否一定要用Filter实现拦截,用interceptor实现可以吗?

2、为什么login和acl要分开来实现,现在一个filter或者interceptor里不行吗?


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

插入代码

1回答

Jimin 2018-07-24 22:27:17

你好,从代码实现效果来说,filter和inteceptor都是可以的,只是通常我们可能会在一个项目里定义多个filter但基本只会定义一个interceptor,这时interceptor通常就不会做实际的业务逻辑,而只做一些常规的记录或兜底等操作,作为请求的收尾。但当项目里只有一个filter时,应该说用哪个就可以了。

login和acl分开,这个我感觉很容易理解的,一个类只做指定的事情,login只关注登录及登录的操作,acl只做针对登录用户的权限校验操作,当然堆到一个类里是可以的,但是分开的话逻辑会更清晰。之后再有其他逻辑时,也可以单独放到一个新的filter里,而不会出现不停的在一个类里写,导致逻辑越来越臃肿。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕函数2082699 #1
    主要是,一般系统微服务化以后,权限和sso一般都会独立出去,各个业务系统单独通过rpc去调用,而rpc一般用dubbo,如果放到filter里,就不通过Spring容器管理了,但是dubbo会集成到Spring里,所以放filter不是很奇怪吗?
    回复 有任何疑惑可以回复我~ 2018-07-25 06:35:41
  • Jimin 回复 提问者 慕函数2082699 #2
    那也要有一个拦截所有操作的点,对于dubbo而言,依靠的dubbo里的filter,在invoke实际方法之前去检查权限。本质上都是有一个全局拦截点的存在,拦截住实际的调用,在调用前做权限的判断。这种拦截,类似于dubbo这种组件,提供的拦截方式基本也都是filter。不过这不是关键,能拦截住才是关键,至于选择使用什么拦截,根据项目实际情况就可以了。
    回复 有任何疑惑可以回复我~ 2018-07-25 23:24:42
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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