首页 > 其他分享 >Spring Security集成的详细步骤

Spring Security集成的详细步骤

时间:2024-12-18 09:31:05浏览次数:5  
标签:集成 web Spring springframework org Security security

一、项目依赖配置

  1. Maven项目

    • 如果使用Maven构建项目,需要在项目的pom.xml文件中添加Spring Security的依赖。通常包括spring-security-webspring-security-config
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>(版本号)</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>(版本号)</version>
    </dependency>
    
    • 注意要根据你的Spring版本选择合适的Spring Security版本,以避免兼容性问题。可以参考Spring官方文档中的版本兼容性矩阵。
  2. Gradle项目

    • 对于Gradle项目,在build.gradle文件中添加以下依赖:
    implementation 'org.springframework.security:spring-security-web:(版本号)'
    implementation 'org.springframework.security:spring-security-config:(版本号)'
    

二、配置Security

  1. 创建配置类
    • 创建一个Java配置类(例如SecurityConfig),该类需要使用@Configuration注解来表明它是一个配置类,并且要继承自WebSecurityConfigurerAdapter
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        // 配置方法将在这里添加
    }
    
  2. 配置认证管理器(Authentication Manager)
    • 可以重写configure(AuthenticationManagerBuilder auth)方法来配置用户认证信息。例如,使用内存中的用户认证:
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication()
               .withUser("user1")
               .password("{noop}password1")
               .roles("USER");
        }
    }
    
    • 这里创建了一个用户名为user1,密码为password1,角色为USER的用户。{noop}表示密码没有进行加密处理,在实际应用中应该使用加密后的密码。
  3. 配置访问控制(Access Control)
    • 重写configure(HttpSecurity http)方法来配置URL访问权限。例如:
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
               .antMatchers("/public/**").permitAll()
               .antMatchers("/admin/**").hasRole("ADMIN")
               .anyRequest().authenticated()
               .and()
               .formLogin()
               .and()
               .logout();
        }
    }
    
    • 上述配置表示:
      • 对于/public/开头的URL路径,允许所有用户访问。
      • 对于/admin/开头的URL路径,要求用户具有ADMIN角色才能访问。
      • 其他所有请求都需要用户认证。
      • 启用了表单登录(formLogin)和注销(logout)功能。

三、启用Spring Security

  1. 在Spring Boot应用中
    • 如果是Spring Boot应用,一旦添加了上述配置类,Spring Security会自动启用。Spring Boot会自动扫描配置类,并应用安全配置。
  2. 在传统Spring应用中
    • 需要在web.xml文件(如果使用Servlet规范)中配置DelegatingFilterProxy,它会将请求委托给Spring Security的过滤器链。
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

这只是Spring Security集成的基本步骤。在实际应用中,可能还需要配置更多的功能,如自定义登录页面、与数据库集成进行用户认证、处理跨域资源共享(CORS)等。例如,要使用自定义登录页面,可以在configure(HttpSecurity http)方法中指定登录页面的路径:

http.formLogin()
   .loginPage("/login")
   .permitAll();

这样,当用户需要登录时,会被重定向到/login页面。并且这个页面对于所有用户都是可访问的(permitAll)。

标签:集成,web,Spring,springframework,org,Security,security
From: https://www.cnblogs.com/java-note/p/18613922

相关文章

  • Flutter OHOS harmony_fluwx 集成微信服务(二)
    harmony_fluwx集成微信服务(2)fluwx链接:https://gitee.com/almost777/fluwx接入功能分享图片,文本,音乐,视频等。支持分享到会话,朋友圈以及收藏.微信支付.在微信登录时,获取AuthCode.拉起小程序.订阅消息.打开微信.从微信标签打开应用初始化注册WxAPIregisterWxApi(ap......
  • Java基于springboot+vue的抗洪救灾管理系统
    收藏关注不迷路!!......
  • SpringCloud 使用 OpenFeign
    一、为什么使用OpenFeign在SpringCloud中,使用OpenFeign主要是为了简化微服务之间的通信,特别是在服务调用的过程中。OpenFeign是一个声明式的Web服务客户端,它能够通过简单的注解方式,快速构建RESTful风格的HTTP请求。具体来说,使用OpenFeign的原因包括以下几个方面:......
  • Java基于springboot+vue的打印店预约及取件系统
    收藏关注不迷路!!......
  • Java基于springboot+vue的扶贫惠农推介系统
    收藏关注不迷路!!......
  • 『玩转Streamlit』--集成Matplotlib
    Steamlit虽然也自带了一些绘图组件(比如折线图,柱状图和散点图等等),但是都比较简单,和Python传统的可视化库比起来,功能上差了很多。本篇介绍如何在StreamlitApp中使用Matplotlib库来绘图。1.st.pyplot函数st.pyplot函数专门用于在Steamlit应用中显示Matplotlib绘制的图形。这......
  • 搭建企业NextCloud并集成ONLYOFFICE
    部署安装1.1离线安装​ 使用能够安全拉取nextcloud镜像的服务器拉取镜像并打包成tar.gz通过sftp传输到准备好的部署服务器,这里使用的版本为aliyun镜像源拉去的latest版本如下[root@VM-12-10-centos~]#dockerimageinspectnextcloud:latest|grep-iversion"Dock......
  • 基于SpringBoot的疫苗在线预约功能实现十三
    一、前言介绍:1.1项目摘要随着全球公共卫生事件的频发,如新冠疫情的爆发,疫苗成为了预防和控制传染病的重要手段。传统的疫苗预约方式,如人工挂号或电话预约,存在效率低、易出错、手续繁琐等问题,无法满足大规模疫苗接种的需求。因此,开发一个高效、便捷的疫苗预约系统显得尤为......
  • 基于SpringBoot的疫苗在线预约功能实现十四
    一、前言介绍:1.1项目摘要随着全球公共卫生事件的频发,如新冠疫情的爆发,疫苗成为了预防和控制传染病的重要手段。传统的疫苗预约方式,如人工挂号或电话预约,存在效率低、易出错、手续繁琐等问题,无法满足大规模疫苗接种的需求。因此,开发一个高效、便捷的疫苗预约系统显得尤为......
  • Spring Bean 是单例的吗?如何保证并发安全?
    引言面试中,经常会被问到这样一个问题:“SpringBean是单例的吗?如果是单例如何保证并发安全呢?”,这两个问题看似没有关联,其实一点也不挨着......