我正在尝试使用用户页面和管理页面创建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";
}
}
我的代码有什么问题?
答案 0 :(得分:1)
向WebSecurityConfig类添加@Configuration
注释将解决此问题。