最近在用shiro实现安全认证功能时发现一个问题

上图我们定义了一个LinkedHashMap,并往Map里面添加了两对键值对,然后执行

bean.setFilterChainDefinitionMap(filterMap)

 之后在将这两个键值对里面的值进行修改,但是没有执行上面的set操作,debug时发现,虽然没有执行set操作,但是FilterChainDefinitionMap里面的filterMap的键值对的值仍然发生了改变。

 甚至在后面再添加一个新的键值对,也能够进入FilterChainDefinitionMap里面,猜测这是Map的机制导致的。

同时注意一个点,在使用shiro安全认证时,定义的Map最好为LinkedHashMap,不要HashMap,因为如果是HashMap,提交到FilterChainDefinitionMap里面后顺序是乱的,有可能会使得我们需要拦截的路径出现了差错。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐