Spring - 安全性 - 使用authorizeRequests链时出现问题

时间:2015-02-13 18:50:50

标签: spring spring-security

我无法理解,如何正确地创建authorizeRequests链的链。

如果我写

 http
                .addFilterBefore(characterEncodingFilter(), CsrfFilter.class)
                .addFilterAfter(cacheControllerFilter(), CsrfFilter.class)
                .authorizeRequests()
                .antMatchers("/**").permitAll()
                .and()
                .authorizeRequests()
                .antMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/admin/login.html")
                .defaultSuccessUrl("/admin/")
                .permitAll()
                .and()
                .logout()
                .permitAll();

在这种情况下,所有都是permitAll,包括/ admin / **。

如果我有

http
                .addFilterBefore(characterEncodingFilter(), CsrfFilter.class)
                .addFilterAfter(cacheControllerFilter(), CsrfFilter.class)
                .authorizeRequests()
                .antMatchers("/**").permitAll()
                .and()
                .authorizeRequests()
                .antMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/admin/login.html")
                .defaultSuccessUrl("/admin/")
                .permitAll()
                .and()
                .logout()
                .permitAll();

在这种情况下,包括/ admin / **在内的所有内容都要求对用户进行身份验证。

1 个答案:

答案 0 :(得分:0)

找到解决方案 http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/#authorize-requests

在我的情况下,解决方案是

http
                .addFilterBefore(characterEncodingFilter(), CsrfFilter.class)
                .addFilterAfter(cacheControllerFilter(), CsrfFilter.class)
                .authorizeRequests()
                .antMatchers("/admin/**").hasRole("ADMIN")
                .anyRequest().permitAll()
                .and()
                .formLogin()
                .loginPage("/admin/login.html")
                .defaultSuccessUrl("/admin/")
                .permitAll()
                .and()
                .logout()
                .permitAll();