springsecurity中http.permitall与web.ignoring的区别说明

在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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot集成整合JWT与Shiro流程详解

    下面是对于“SpringBoot集成整合JWT与Shiro流程详解”的完整攻略。 概述 在传统的Web应用中,我们通常采用用户名和密码进行身份认证,但这种方式很容易受到各种攻击,例如:暴力破解、钓鱼等。为了解决这些问题,我们可以采用JWT的方式进行身份认证,并使用Shiro进行授权管理。本文将详细介绍SpringBoot集成整合JWT与Shiro的流程。 J…

    Java 2023年5月20日
    00
  • java获取当前时间并格式化代码实例

    下面是“Java获取当前时间并格式化代码实例”的完整攻略。 1. Java获取当前时间 Java可以通过java.util.Date和java.util.Calendar两个类获取当前时间。其中,java.util.Date是Java的日期类,可以获取当前时间戳;而java.util.Calendar类则是日期操作的类,可以获取具体的年、月、日、时、分、秒等…

    Java 2023年5月20日
    00
  • 深入理解Java的Spring框架中的IOC容器

    深入理解Java的Spring框架中的IOC容器 什么是IOC IOC全称 Inversion of Control,即控制反转。它是一种设计模式,用于减少计算机程序的耦合,使程序更加灵活,易于维护和扩展。在计算机程序中,对象之间的关系很密切,一个对象依赖于另一个对象,如果硬编码这些关系,就会造成程序的耦合度很高,不容易维护和扩展。而控制反转就是将这些对象之…

    Java 2023年5月19日
    00
  • MyBatis实现注册及获取Mapper

    Sure,下面是MyBatis实现注册及获取Mapper的完整攻略: REGISTRATION Resources Configuration 在MyBatis中注册Mapper的第一步是添加资源配置,也就是MyBatis的XML配置文件。MyBatis通过解析这些配置文件来构建SqlSession工厂,进而创建SqlSession实例。我们需要创建以下两个…

    Java 2023年5月19日
    00
  • 浅析java中常用的定时任务框架-单体

    下面我将详细讲解“浅析java中常用的定时任务框架-单体”的完整攻略: 1. 什么是定时任务框架 在Java开发中,经常需要定期执行一些任务。例如:每隔一段时间就要进行一次数据库备份、定时清理临时文件等。这些任务可以使用定时任务框架来实现。 定时任务框架是一种框架,用于安排在特定时间或间隔时间内执行任务,它可以有效地提高程序的可靠性和效率。 2. Java中…

    Java 2023年5月27日
    00
  • Spring BOOT AOP基础应用教程

    Spring BOOT AOP基础应用教程 Spring AOP(面向切面编程)是Spring框架的一个重要组成部分,它可以帮助我们更好地管理和维护代码。在本文中,我们将介绍Spring Boot AOP的基础知识和应用方法。 步骤一:添加依赖 我们需要在pom.xml文件中添加Spring AOP的依赖。以下是一个示例: <dependency&gt…

    Java 2023年5月15日
    00
  • java 数学计算的具体使用

    Java 数学计算的具体使用 在Java中,我们可以使用内置的Math类来进行数学运算。该类提供了许多静态方法,可以进行各种数学运算。本文将详细介绍Math类中提供的方法,并通过两个示例说明如何在Java中使用这些方法。 常用Math类方法 常量 Math类提供了两个数学常数: π(圆周率):Math.PI e(自然对数的底数):Math.E 基本运算 绝对…

    Java 2023年5月26日
    00
  • Java 判断两个字符串是否由相同的字符组成的实例

    下面是“Java 判断两个字符串是否由相同的字符组成的实例”的完整攻略。 鉴于这个问题,我们需要一个逐字比较的算法来解决。首先,需要确保两个字符串的长度相等,然后对它们进行排序,最后逐一比较它们是否相等。下面是具体步骤: 确保两个字符串的长度相等。可以使用 length() 方法来获取两个字符串的长度,并使用 if 语句确定它们是否相等,如果不相等,马上返回…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部