Multiple antMatchers in Spring security -


i work on content management system, has 5 antmatchers following:

http.authorizerequests()         .antmatchers("/", "/*.html").permitall()         .antmatchers("/user/**").hasrole("user")         .antmatchers("/admin/**").hasrole("admin")         .antmatchers("/admin/login").permitall()         .antmatchers("/user/login").permitall()         .anyrequest().authenticated()         .and()         .csrf().disable(); 

which suppose mean visitors can see site @ root path (/*), , users can see (/user), admin can see (/admin), , there 2 login pages 1 users , admin.

the code seems work fine, except admin section - doesn't work return access denied exception.

i believe problem in order of rules:

.antmatchers("/admin/**").hasrole("admin") .antmatchers("/admin/login").permitall() 

the order of rules matters , more specific rules should go first. starts /admin require authenticated user admin role, /admin/login path (because /admin/login matched /admin/** rule , therefore second rule ignored).

the rule login page should therefore go before /admin/** rule. e.g.

.antmatchers("/admin/login").permitall() .antmatchers("/admin/**").hasrole("admin") 

Comments

Popular posts from this blog

facebook - android ACTION_SEND to share with specific application only -

python - Creating a new virtualenv gives a permissions error -

javascript - cocos2d-js draw circle not instantly -