[ 
https://issues.apache.org/jira/browse/SHIRO-497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15199597#comment-15199597
 ] 

Mike Richardson commented on SHIRO-497:
---------------------------------------

Agreed, the setFilterChainDefinitionMap method signature should not accept a 
Map here, since there is nothing in the Map contract that guarantees order.  

As a workaround, users should use a LinkedHashMap, which will iterate in the 
order in which the entries were put into the map.

> setFilterChainDefinitionMap accepts Map interface objects, whose 
> implementations are mostly unordered
> -----------------------------------------------------------------------------------------------------
>
>                 Key: SHIRO-497
>                 URL: https://issues.apache.org/jira/browse/SHIRO-497
>             Project: Shiro
>          Issue Type: Improvement
>          Components: Configuration
>            Reporter: Jon Steege
>            Priority: Minor
>
> org.apache.shiro.spring.web.ShiroFilterFactoryBean has a method,  
> setFilterChainDefinitionMap which accepts Map interface objects. Most Map 
> interface objects have no guaranteed order,  but the filter chain definitions 
> rely heavily on specific ordering for the application of rules. 
> For example, 
> {code}
>     Map<String, String> filterChainDefs = new HashMap<String, String>();
>     filterChainDefs.put("/s/test", "authc");
>     filterChainDefs.put("/s/**", "anon");
>     shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefs);
> {code}
> In this example, this structure is acceptable to the setter on 
> shiroFilterFactoryBean, but will non-deterministically allow or deny access 
> to /s/test between server restarts. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to