验证请求

我们的例子中要求用户进行身份验证并且在我们应用程序的每个URL这样做。我们可以通过给http.authorizeRequests()添加多个子节点来指定多个定制需求到我们的URL。例如:

  1. protected void configure(HttpSecurity http) throws Exception {
  2. http
  3. .authorizeRequests() //1
  4. .antMatchers("/resources/**", "/signup", "/about").permitAll() //2
  5. .antMatchers("/admin/**").hasRole("ADMIN") //3
  6. .antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')") 4
  7. .anyRequest().authenticated() //5
  8. .and()
  9. // ...
  10. .formLogin();
  11. }
  1. http.authorizeRequests()方法有多个子节点,每个macher按照他们的声明顺序执行。
  2. 我们指定任何用户都可以访问的多个URL模式。任何用户都可以访问URL以 “/resources/“,开头的URL ,以及”/signup”, “/about”.
  3. 以”/admin/“ 开头的URL只能由拥有 “ROLEADMIN”角色的用户访问. 请注意我们使用HasRole方法,没有使用ROLE前缀。
  4. 任何以/db/开头的URL需要用户同时具有”ROLEADMIN” 和 “ROLE_DBA”. 和上面一样我们的hasRole方法也没有使用ROLE前缀。
  5. 尚未匹配的任何URL要求用户进行身份验证