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

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

bean.setFilterChainDefinitionMap(filterMap)

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

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

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐