为什么我的HttpSecurity不将配置应用于管理员路径?

时间:2018-11-06 12:06:38

标签: java spring spring-security

我正在尝试使用用户页面和管理页面创建Web应用程序。我希望用户通过登录表单查看未登录的用户页面,并通过登录表单访问管理部分。管理员部分应通过“ / admin_panel”网址路径进行访问。我使用 configure(HttpSecurity http)方法保护了此url路径,但未发生任何事情-用户页面和管理页面无需表单登录即可打开。

WebSecurityConfig.java:

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{

@Autowired
DataSource dataSource;

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/admin_panel/**").hasRole("ADMIN")
            .anyRequest().authenticated()
            .and()
        .formLogin().and()
        .httpBasic()
        ;   
}

@Autowired
 public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
     auth.jdbcAuthentication().dataSource(dataSource)
      .usersByUsernameQuery("select name,password,enabled from users where name=?")
      .authoritiesByUsernameQuery("select username, role from user_roles where username=?")
      .passwordEncoder(new BCryptPasswordEncoder());
 } 
}

WebController.java:

@Controller
public class WebController {

@GetMapping(value= {"/"})
    public String index(){
        return "index";
}

@GetMapping(value= {"/admin_panel/admin"})
    public String admin(){
        return "admin";
    }
}

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

向WebSecurityConfig类添加@Configuration注释将解决此问题。