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

yizhihongxing

在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日

相关文章

  • Mybatis如何自动生成数据库表的实体类

    要让Mybatis自动生成数据库表的实体类,需要使用Mybatis Generator这个工具。 下面是使用Mybatis Generator自动生成实体类的详细步骤: 配置generatorConfig.xml文件 在generatorConfig.xml文件中,需要指定要生成的实体类所在的包名、数据库连接信息、要生成的表名等。下面是一个示例配置: &lt…

    Java 2023年5月20日
    00
  • MyBatis学习教程之开发Dao的方法教程

    MyBatis学习教程之开发Dao的方法教程 简介 本教程将详细介绍如何使用MyBatis框架开发Dao层的方法。通过本教程,你将学习到如何使用MyBatis的基本CRUD操作,并且了解一些高级用法。 开发Dao层的基本步骤 步骤1:创建Mapper映射文件 在MyBatis中,开发Dao层首先要创建一个与数据库相对应的Mapper映射文件。在Mapper映…

    Java 2023年5月19日
    00
  • JSP 自定义标签第1/3页

    接下来我将为您详细讲解 JSP 自定义标签的完整攻略。 什么是 JSP 自定义标签? JSP 自定义标签(JSP Custom Tag)是一种 JSP 的扩展机制,可以将页面的展现与页面逻辑分离开来。自定义标签通过定义自己的语法可以将一些 Java 代码片段封装到自定义标签中,使得这些功能可以在 JSP 页面中通过 XML 标签来调用使用。 JSP 自定义标…

    Java 2023年6月15日
    00
  • 在Ubuntu系统下安装JDK和Tomcat的教程

    下面是在Ubuntu系统下安装JDK和Tomcat的教程。 1. 安装JDK 1.1 下载JDK 首先,我们需要到Oracle官网下载JDK的安装包。下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 选择适合自己操作系统的对应版本下载。 1.2 安装…

    Java 2023年5月19日
    00
  • Java单例的写法详解

    Java中的单例模式,指的是确保一个类只有一个实例,并提供访问该实例的全局访问点。这在某些情况下非常有用,例如当有一个全局资源,如线程池、数据库连接池等,需要在应用程序的整个生命周期内保持一致时。下面是Java单例模式的写法详解。 懒汉式单例模式 实现方式 懒汉式单例模式是指在需要使用实例的时候才去创建,而不是在类加载时就创建。懒汉式单例模式可以通过两种方式…

    Java 2023年5月23日
    00
  • Windows Server 2019 Web服务IIS配置与管理理论篇(术语解释、工作原理与常见的WEB服务器)

    Windows Server 2019 Web服务IIS配置与管理理论篇 一、术语解释 WEB 服务器:其实就是部署在服务器上的软件,用于处理用户的HTTP请求并返回相应的HTML或其他数据。 IIS:Internet Information Services,是Windows服务器上自带的WEB服务器软件,目前最新版本为IIS10。 应用程序池:一个IIS…

    Java 2023年6月15日
    00
  • Maven 错误找不到符号的解决方法

    下面是详细的Maven错误找不到符号的解决方法攻略。 1. 问题描述 在使用Maven构建Java项目时,有时代码能够正常通过编译,但是在执行mvn clean package时可能会出现以下错误信息: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:…

    Java 2023年5月19日
    00
  • IDEA的基本使用(让你的IDEA有飞一般的感觉)

    下面就为您详细讲解“IDEA的基本使用(让你的IDEA有飞一般的感觉)”的完整攻略。 1. 什么是IDEA IntelliJ IDEA是一款由JetBrains公司开发的Java集成开发环境(IDE)。除了Java外,它还支持各种各样的编程语言,如Kotlin、Groovy和Scala等。在软件开发中,工具的重要性与代码编写同等重要,好的IDE可以帮助我们更…

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