在Spring Security中,我们可以使用http.permitAll()
或者web.ignoring()
来配置哪些接口需要放行。这两个方法虽然都可以达到相同的效果,但它们的实现方式有所不同。
http.permitAll()
是Spring Security提供的一个方法,它允许我们定义一组匹配URL的表达式,这些URL可以被所有用户访问。例如:
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and()
.logout().permitAll();
}
在上述示例中, http.antMatchers().permitAll()
表达式指示Spring Security允许所有人访问在“/public/**”开头的所有URL。任何已认证用户仍可以通过访问此限制范围内的URL来访问应用程序功能。
web.ignoring()
是Spring Boot框架提供的一个方法,其目的是使Spring Security不拦截匹配指定表达式的URL请求。它可以让Spring Security忽略某些静态资源或者其他不需要认证即可访问的URL。例如:
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/css/**", "/js/**", "/images/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}
在上述示例中, web.ignoring().antMatchers()
表达式指示Spring Security忽略所有以“/css/”、“/js/”、“/images/”开头的路径的请求。这将使得这些路径中的所有内容都不需要进行认证。
总结:
http.permitAll()
方法是Spring Security提供的,是在Security中完成配置的。web.ignoring()
方法是Spring Boot框架提供的,是在Spring MVC中完成配置的。http.permitAll()
方法适用于在Spring Security中进行全面的配置。web.ignoring()
方法适用于在Spring Boot中进行简单的静态资源或其他不需要认证即可访问的路径配置。
示例代码:
//使用http.permitAll()方法配置
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and()
.logout().permitAll();
}
//使用web.ignoring()方法配置
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/css/**", "/js/**", "/images/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springsecurity中http.permitall与web.ignoring的区别说明 - Python技术站